Ios 将swift框架导入objective-c项目
我正在将swift框架导入objective-c项目,如下所示:Ios 将swift框架导入objective-c项目,ios,objective-c,swift,ios-frameworks,Ios,Objective C,Swift,Ios Frameworks,我正在将swift框架导入objective-c项目,如下所示: @import MyFramework; 问题是,我正在导入框架的类只能识别一些类 被认可的类别: public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle { ... } 不属于以下类别的类别: public class VeediUtils { ... } 它们都是公共的,那么为什么第一个在
@import MyFramework;
问题是,我正在导入框架的类只能识别一些类
被认可的类别:
public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle
{ ... }
不属于以下类别的类别:
public class VeediUtils
{ ... }
它们都是公共的,那么为什么第一个在工作区中被识别,而另一个不被识别呢
我还在头文件myframeworkswift.h中看到一个类
@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler>
@接口识别类:UIViewController
出现而另一个不出现
为什么呢
还要指出的是,当我将swift框架导入swift项目以访问objc中的swift类(该类不是从NSObject继承的)时,同样的过程也会起作用,您需要: @objc公共类VeediUtils Swift类或协议必须用@objc属性标记才能在Objective-C中访问和使用。该属性告诉编译器可以从Objective-C访问这段Swift代码。如果您的Swift类是Objective-C类的后代,编译器会自动为您添加@objc属性
您必须将
@objc
添加到VeediUtils
类的声明中,或者使其继承自NSObject
。否则,Objective-C将看不到它
在您的情况下,
RecognizedClass
被识别是因为它是UIViewController
的一个子类,而UIViewController是NSObject
的一个子类。如果您以前将项目配置为与Swift集成,并且希望使用Swift动态框架,则必须以这种方式导入它(替换{value})根据您的项目使用合适的名称):
#导入
#导入“{YourProjectTargetName}-Swift.h”
编辑:
如果您的框架将定义模块
设置为真
,那么您可以这样导入它:
@import MyFramework;
@import-MyFramework;
在Objective-C中使用Swift类
如果要在应用程序目标中导入代码(在一个项目中混合使用Objective-C和Swift),则应使用下一个导入行#import“-Swift.h”
将Swift代码公开给Objective-C代码
在这篇文章中,我将描述如何将Swift框架导入Objective-C代码
Objective-C消费者->Swift动态框架
Xcode版本10.2.1
创建Swift框架
跟随
公开Swift API。使用Objective-C中的Swift函数
目标C消费者
跟随
将模块导入Objective-C客户端代码
我不能使用PaperOnboard:#导入“PaperOnboard/PaperOnboard-Swift-h”迟早不起作用
UIViewController
也将是Swift类