【iOS开发】使用扩展方法时出现"selector not recognized" runtime exceptions的解决方案
来源:互联网 发布:sketch中文版软件 编辑:程序博客网 时间:2024/06/07 02:08
最近在编写iOS的framwork库的时候,遇到这样一个问题:
如果在编写framework库的时候使用到category methods(扩展方法),在引用我们编译好的framework库的时候,可能会报出这样的错误:
selector not recognized
这是因为Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数定义链接符号,它只为每个类创建链接符号。
这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别中的方法时,出现”selector not recognized”,也就是找不到方法定义的错误。
根据官方文档给出的建议,我们可以这样解决这个问题:
在项目(我们实际运行的工程,不是framework库的工程)的 build setting 中找到 other linker flags ,添加$(OTHER_LDFLAGS) -ObjC.
这个编译选项,他会告诉编译器编译的时候要整合我们扩展的方法。
值得一提的是,如果你的项目引用了多个库,并且这些库之间有互相的依赖的时候,添加了上面这句编译提示后,编译会变得严格,系统将检测出重复引用的那些库,并且提示编译不通过。这就要求我们在我们的framework库中删掉重复引用的部分,比如:
A.framework与B.framework同时引用了C.framework,此时应该在A中删除对C的引用,并将A的引用指向B,这样来保证不出现重复的引用。
感谢阅读!
阅读全文
0 0
- 【iOS开发】使用扩展方法时出现"selector not recognized" runtime exceptions的解决方案
- ios framework中使用了 Category 的时候,调用app出现 "selector not recognized"解决方法
- IOS 创建含有category的静态库,selector not recognized的解决方案
- ios 含category的静态库出现selector not recognized错误的解决办法
- framework中使用了 CateGory 的时候,调用app出现 "selector not recognized"解决方法
- 创建含有category的静态库,selector not recognized的解决方案
- 创建含有category的静态库,selector not recognized的解决方案
- 创建含有category的静态库,selector not recognized的解决方案
- 创建含有category的静态库,selector not recognized的解决方案
- xcode 中出现"selector not recognized"错误 参考解决办法
- 编译内核时出现file not recognized
- Why do I get a runtime exception of "selector not recognized" when linking against an Objective-C st
- Swift-Selector方法的扩展
- 安卓端使用plus.runtime.restart();出现白屏的解决方案
- 解决在win7系统使用Protel 99SE添加库文件时出现“file is not recognized“
- iOS开发中runtime的使用
- 【iOS】unrecognized selector sent to instance出现的原因和解决方案
- iOS Runtime的使用
- ActiveMQ(三):消息监听器 MessageListener
- PAT甲级1064
- 挖坑小团队之经验总结
- net/http包的使用模式和源码解析
- Linux快速读取文件之文件映射c++实例
- 【iOS开发】使用扩展方法时出现"selector not recognized" runtime exceptions的解决方案
- Server Tomcat v7.0 Server at localhost failed to start
- 危桥僵尸问题的制度思考
- 安卓微信内,window.location.reload()不刷新问题
- MySQL5.7更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
- shell脚本学习 之文件测试运算符
- PG重建索引
- [3].Spark 学习笔记 使用java ---explode
- Unity 、Eclipse Android平台、接入支付宝SDK