我有一个使用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
,则编译器会抱怨重复声明。
答案 0 :(得分:1)
升级到Xcode 4.2导致编译器从GCC更改为Apple LLVM。 LLVM不喜欢.pch中的实现。将实现提取到.m文件,直接导入原始.h,用GCC编译都可以解决问题。