2015-06-28 18 views
10

tôi nhập khẩu khuôn khổ nhanh chóng vào dự án mục tiêu-c như thế này:nhập khẩu khuôn khổ nhanh chóng thành một dự án Mục tiêu-c

@import MyFramework; 

Vấn đề là chỉ một số các lớp học được công nhận bởi lớp tôi đang nhập khẩu khuôn khổ.

Lớp mà được công nhận:

public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle 
{ ... } 

Lớp mà không phải là:

public class VeediUtils 
{ ... } 

Cả hai đều công vậy tại sao người đầu tiên được ghi nhận trong không gian làm việc và người kia không?

Ngoài ra tôi thấy trong file header MyFramework-Swift.h rằng một lớp

@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler> 

Xuất hiện trong khi dont khác

Tại sao vậy?

Cũng chỉ rằng công việc này thủ tục tương tự khi tôi đang nhập khẩu khuôn khổ nhanh chóng với dự án nhanh chóng

Trả lời

15

Để truy cập vào một lớp học nhanh chóng trong objc, đó không phải là thừa hưởng từ NSObject bạn cần phải:

công @objc lớp VeediUtils

Một lớp Swift hoặc giao thức phải được đánh dấu bằng thuộc tính @objc để có thể truy cập và sử dụng được trong mục tiêu-C. Thuộc tính này cho trình biên dịch biết đoạn mã Swift này có thể được truy cập từ Objective-C. Nếu lớp Swift của bạn là một hậu duệ của một lớp Objective-C, trình biên dịch sẽ tự động thêm thuộc tính @objc cho bạn.

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

4

Bạn phải thêm @objc để khai báo của lớp VeediUtils, hoặc làm cho nó kế thừa từ NSObject. Nếu không nó sẽ không được hiển thị cho Objective-C.

Trong trường hợp của bạn, RecognizedClass được nhận dạng vì đây là lớp con của UIViewController, là phân lớp của NSObject.

19

Nếu trước đây bạn đã cấu hình dự án cho việc tích hợp với Swift và muốn sử dụng Swift động Framework, bạn phải nhập nó như cách này (trong {} bạn cần phải đặt tên thích hợp phụ thuộc vào dự án của bạn):

#import <{MyFramework}/{MyFrameworkMainClass}-Swift.h> 
#import "{YourProjectTargetName}-Swift.h" 
+0

cảm ơn bạn rất nhiều vì tihs –

Các vấn đề liên quan