Swift 和 OC 混编遇到的一些问题

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{
...
}

你可能感兴趣的:(Swift 和 OC 混编遇到的一些问题)