Swift和OC混编中, 有时候OC通过字符串生成Class
. 然后通过[[Class alloc] init]
生成OC对象.
今天遇到一个诡异的问题, 就是OC死活都生成不了Class
. 但是类名明明没有错.
OC调用代码
Class viewControllerClass = NSClassFromString("YGSuggestionViewController");
//viewControllerClass 死活都是nil
NSAssert(viewControllerClass, @"can't find Class");
下面是Swift的类
class YGSuggestionViewController: UIViewController,XLFormRowDescriptorViewController{
...
}
最后发现解决办法, OC在调用NSClassFromString
的时候, 要通过@objc()把这个类声明为OC对象.
@objc(YGSuggestionViewController)
class YGSuggestionViewController: UIViewController,XLFormRowDescriptorViewController{
...
}