我有一个使用 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/