一尘不染

将Swift框架导入Objective-C项目

swift

我将swift框架导入到Objective-C项目中,如下所示:

@import MyFramework;

问题在于我正在导入框架的类只能识别某些类。

被认可的课程:

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

该类不是:

public class VeediUtils
{ ... }

它们都是公开的,那么为什么第一个在工作空间中被识别,而另一个却没有?

我也在头文件MyFramework-Swift.h中看到一个类

@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler>

出现而其他不出现

这是为什么?

另外要指出的是,当我将swift框架导入swift项目时,该相同的程序也可以工作


阅读 251

收藏
2020-07-07

共1个答案

一尘不染

要访问不是从NSObject继承的objc中的swift类,您需要:

@objc公共课程VeediUtils

Swift类或协议必须使用@objc属性标记,才能在Objective-C中访问和使用。该属性告诉编译器可以从Objective-
C访问这段Swift代码。如果您的Swift类是Objective-C类的后代,则编译器会自动为您添加@objc属性。

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

2020-07-07