升级到 Xcode 4.2/iOS 5 后,类别中的方法引发异常
Posted
技术标签:
【中文标题】升级到 Xcode 4.2/iOS 5 后,类别中的方法引发异常【英文标题】:Method from a category throws an exception after upgrade to Xcode 4.2/iOS 5 【发布时间】:2011-10-14 06:02:55 【问题描述】:我有一个使用 shuffle 方法扩展 NSMutableArray
的类别。该类别在.h
文件中声明和实现,该文件包含在.pch
文件中。在 ios 3.xx 和 4.xx 上运行良好。
我昨天安装了 Xcode 4.2。将基础 SDK 设置为 5.0 并将部署目标设置为 3.2 的重新编译应用抛出 -[__NSArrayM shuffle]: unrecognized selector sent to instance ...
我试过 iPhone 5.0 模拟器、iPad 5.0 模拟器、iPhone 4G 和 iOS 5 - 没有区别。
现在,如果我将声明/实现移至.m
,在该处实现发送shuffle
消息的类,则应用程序运行良好。
原来的.h
确实被导入了——如果我只是将代码从原来的.h
复制到.m
,编译器会抱怨重复声明。
【问题讨论】:
【参考方案1】:升级到 Xcode 4.2 导致编译器从 GCC 更改为 Apple LLVM。而且 LLVM 不喜欢在 .pch 中实现。将实现解压成.m文件,直接导入原.h,用GCC编译都可以解决问题。
【讨论】:
最后,关于我遇到的问题的一些信息。但是我尝试了这个答案,它仍然没有用!任何的想法?我要拔头发了…… 我最终将我的实现保留在 pch 中,并使用公共方法创建了一个 NSOBject。暂时有效以上是关于升级到 Xcode 4.2/iOS 5 后,类别中的方法引发异常的主要内容,如果未能解决你的问题,请参考以下文章
iTunes 同步中的未知错误 0xE8003FFE(Xcode 4.2、iOS SDK 5.0、iPod 第二代 iOS 4.2.1)