Vungle SDK的崩溃问题

最近接了Vungle的广告SDK,主要因为听说它的 reward video 效果还不错。结果一接入就是崩溃,崩溃提示是selector not recognized.

造成这个问题的原因在于Vungle的静态库中使用了Category方法。

这里涉及到Objective C的编译规则,OC只负责针对类生成编译符号,并不针对方法生成,并没有将对应的代码链接到app中。

这样产生的问题是,如果第三方库使用了Category方法,针对现有类(如Foundation或者UIKit库中的类)编写了扩展方法,这部分扩展方法的实现并不会链接到app中,那么在运行时调用这些代码时,导致的结果就是selector not recognized。这是OC动态特性埋下的一个锅。

解决这个问题的方法是,在xcode的build setting中,找到Other Linker Flags选项,将选项设置为-ObjC,-ObjC配置的目的就是告诉编译器,在链接静态库时,把静态库所有的OC代码都链接进来。

这样的代价是,app体积必然因此而变大。

你可能感兴趣的:(Vungle SDK的崩溃问题)