我在现有的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。

10-08 12:12