异样的unrecognized selector sent to instance
2015-12-29 13:46
169 查看
Reachability的源代码,在一个静态库中定义,调用的地方在IOS App工程中
xcode调试报错,-[Reachability setKey:]: unrecognized selector sent to instance 0x7fdf949a2cc0
查看Reachability的源代码,确实定义了这个方法
在reach.key=@""这行代码打个断点,重新运行查看运行时Reachability的属性
红框中的属性在我使用的Reachability源代码中翻遍了也没有找到,所以我怀疑是xcode的链接出错了。
用nm命令查看Reachability的静态库的符号表,和ios APP的符号表(左侧是静态库的符号表,右侧是App的符号表)
对比后,果然是xcode 在链接生成App时出错了。
于是用nm命令遍历App工程中引用(直接或者间接引用)的第三方库文件,终于在一个名叫libucs.a的文件中找到了另一份Reachability定义
问题原因查到了,解决方法就是修改自己的Reachability的源代码,就是将Reachability类改名。
吐槽下坑爹的xcode,竟然没有报出duplicate symbol错误,竟然让我顺利的生成了App。
总结就是Objective-C语言,既然没有命名空间,那么写代码时强烈建议加前缀。
Reachability *reach = [[[Reachability alloc] init] autorelease]; reach.key = @"";
xcode调试报错,-[Reachability setKey:]: unrecognized selector sent to instance 0x7fdf949a2cc0
查看Reachability的源代码,确实定义了这个方法
@interface Reachability: NSObject { @private NSString *key_; SCNetworkReachabilityRef reachabilityRef; } @property (copy) NSString *key; // Atomic because network operations are asynchronous. ......
在reach.key=@""这行代码打个断点,重新运行查看运行时Reachability的属性
红框中的属性在我使用的Reachability源代码中翻遍了也没有找到,所以我怀疑是xcode的链接出错了。
用nm命令查看Reachability的静态库的符号表,和ios APP的符号表(左侧是静态库的符号表,右侧是App的符号表)
对比后,果然是xcode 在链接生成App时出错了。
于是用nm命令遍历App工程中引用(直接或者间接引用)的第三方库文件,终于在一个名叫libucs.a的文件中找到了另一份Reachability定义
问题原因查到了,解决方法就是修改自己的Reachability的源代码,就是将Reachability类改名。
吐槽下坑爹的xcode,竟然没有报出duplicate symbol错误,竟然让我顺利的生成了App。
总结就是Objective-C语言,既然没有命名空间,那么写代码时强烈建议加前缀。
相关文章推荐
- LNMP优化
- IM类app业务模块功能接口定义(二)
- 判断view是否可见
- Python标准库07 信号 (signal包,部分os包)
- linux 查看磁盘空间命令
- Android实现计时与倒计时(限时抢购)的几种方法
- 2015年公益
- div浮动固定浏览器顶部实现代码
- python 1.1 数据类型和变量
- java 内存模型
- FMDB的增删改查出操作
- 【ASP.NET 进阶】根据IP地址进行百度地图定位
- bzoj3140: [Hnoi2013]消毒
- ubuntu 13.04安装
- hadoop起步之环境安装2
- "android-studio undefined reference to `__android_log_print "错误解决方法
- Swift中fallthrough的使用
- NSTimer(定时器)的使用
- jQuery源码分析4
- struts2标签引用自己的方法