我在现有的Objective-C项目中用Swift编写了一个类。到目前为止,桥接效果很好。但是,我确实有一个方法,其中在运行时使用NSClassFromString()生成一个类。当字符串是我的Swift类名时,它返回nil。
class MySwiftClass : NSObject {}
在Objective-C中:
Class myClass = NSClassFromString(@"MySwiftClass");
并且myClass每次都为零。我也尝试过:
Class myClass = NSClassFromString(@"MyAppName.MySwiftClass");
而且仍然是零。
最佳答案
所有快速类都将“产品模块名称”(Product Module Name)和点命名为其命名空间(Module.Class)。如果要在Objective-C代码中为该类使用“MySwiftClass”名称,请执行以下操作:您可以添加@objc(MySwiftClass)
注释以公开相同的swift类名称(不包含模块):
@objc(MySwiftClass)
class MySwiftClass{
...
}
然后
Class myClass = NSClassFromString(@"MySwiftClass");
将包含该类而不是nil。