我有一个使用 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 模拟器、带有 iOS 5 的 iPhone 4G - 没有区别。

现在,如果我将声明/实现移动到 .m,其中实现了发送 shuffle 消息的类,应用程序运行良好。
原始 .h 确实被导入 - 如果我只是将代码从原始 .h 复制到 .m 编译器会提示重复声明。

最佳答案

升级到 Xcode 4.2 导致编译器从 GCC 更改为 Apple LLVM。并且 LLVM 不喜欢在 .pch 中实现。把实现解压成.m文件,直接导入原来的.h,用GCC编译都解决了。

关于iphone - 升级到 Xcode 4.2/iOS 5 后,来自类别的方法抛出异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7763656/

10-10 14:08
查看更多