类别中的方法在升级到Xcode 4.2 / iOS 5后引发异常

时间:2011-10-14 06:02:55

标签: iphone ios xcode

我有一个使用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,则编译器会抱怨重复声明。

1 个答案:

答案 0 :(得分:1)

升级到Xcode 4.2导致编译器从GCC更改为Apple LLVM。 LLVM不喜欢.pch中的实现。将实现提取到.m文件,直接导入原始.h,用GCC编译都可以解决问题。