将swift框架导入Objective-c项目

Mic*_*l A 19 objective-c ios ios-frameworks swift

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

@import MyFramework;
Run Code Online (Sandbox Code Playgroud)

问题是只有一些类被我导入框架的类识别.

被认可的班级:

public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle 
 { ... } 
Run Code Online (Sandbox Code Playgroud)

这个课不是:

public class VeediUtils
{ ... } 
Run Code Online (Sandbox Code Playgroud)

它们都是公共的,为什么第一个在工作区被识别而另一个没有?

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

@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler>
Run Code Online (Sandbox Code Playgroud)

出现而另一个不

这是为什么?

还指出,当我将swift框架导入swift项目时,同样的过程也能正常工作

sal*_*t5r 30

如果您之前已将Project配置为与Swift集成并希望使用Swift Dynamic Framework,则必须以这种方式导入它(根据您的项目将{value}替换为适当的名称):

#import <{MyFramework}/{MyFrameworkMainClass}-Swift.h>  
#import "{YourProjectTargetName}-Swift.h"
Run Code Online (Sandbox Code Playgroud)


小智 26

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

@objc公共类VeediUtils

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

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