现象描述:在使用cocoaPods制作私有库时,在私有库里,需要导入之前自己制作的 framework;导入之后,编译正常;但是运行报错:unrecognized selector sent to class XXX 。
原因分析:运行正常,说明头文件导入正确;但是运行报错,结合报错信息可知,是二进制文件没有实际导入;这种情况,需要确认:1,导入的framework,是否正确实现了方法; 2,导入的 framework 是否正确使用了标志位;此处,我的错误为第二种; framework 导入时,没有在工程中的 other linker flags 中添加标志位:-ObjC; (-ObjC: 链接库中的所有oc代码到app;此外,还有 -all_load: 链接库中所有代码到 app ; 等,参考链接:点击打开链接);
解决方案:1,可以直接修改pod 工程下的 对应组件的 target 中的 other linker flags ,添加 -ObjC 标志位;2,修改podSpec 文件,动态添加标志位; 此处:我采用的第二种,在 podSpec 文件中,添加:
s.xcconfig = { "OTHER_LDFLAGS" => "-ObjC"