使用sdk 7.1后,项目出问题了

昨天苹果发布iOS7.1正式版,Xcode也更新了。
我使用了升级后的Xcode重新编译以前的项目,发现在使用iOS5的设备上会闪退,而在iOS6和iOS7的设备上一切正常。
跟踪后发现出错的语句是 CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo
编译正常,但执行到这句就闪退了,而且仅在使用iOS5的设备上会这样,6和7不会。
也就是说,用Cocostudio导出的动画文件,在iOS5上没法用了。不知有没人和我一样的情况?

Xcode5.1(5B130a)
Base SDK iOS7.1

您好,您能说出具体机型么?iphone4/4s/5/5s?

你好!我个人觉得和具体机型无关。我目前手头上只有两台设备上装的是iOS5,iPad2和iTouch4,而这两台设备都会产生我前面说的状况。
我起先以为和SDK相关,因为Xcode5.1使用的SDK是7.1,Xcode5.0.2使用的SDK是7.0。所以我把Xcode5.0.2中的SDK7.0复制到Xcode5.1内,然后使用Xcode5.1,选择SDK7.0进行编译,但状况如故。我又把Xcode5.1中的SDK7.1复制到Xcode5.0.2内,然后使用Xcode5.0.2,选择SDK7.1进行编译,问题居然解决了,在iOS5、6、7中运行都正常。因此我判断,动画文件在iOS5中读取出错的状况,和使用的SDK无关。
我又注意到,Xcode5.1使用的编译器是Apple LLVM 5.1,而Xcode5.0.2使用的编译器是Apple LLVM 5.0,我怀疑是编译器版本不同导致的。当然,更深层次的原因有待你们去分析。听说CocoStudio新版本也快出来了,希望能在此之前把问题解决。

果然和编译器相关。在新版本Xcode的工程设置中,把Custom Compiler Flags中的-O2去掉,就不会出现Cocostudio导出的动画文件在iOS5设备中读取出错的状况。见附件截图。
Custom Compiler Flags的设置项我之前没修改过,-O2 是用 cocos2d-x 2.2.2(其他版本我没去看)创建工程时就默认设置的优化级别。
如果有人使用最新发布的Xcode5.1,在iOS5环境下调试时出现我和一样的状况,不妨按我说的改下。这可是我经过一天的折腾,试尽各种手段,才找到的简单解决方案,字字看来皆是血啊。:6:

:14:感谢分享~~

我用新版的xcode选不了ios5的模拟器 不知lz有没有解决过这个问题?

没解决。我在上个版本Xcode(5.0.2)中,就已经不能用iOS5模拟器了。我的操作系统是10.9 Mavericks,听人说Xcode5.0.2在10.8下还能用iOS5的模拟器?我不太清楚。
我试过把旧版Xcode中的iOS5模拟器拷出来放入新版中,结果是有了这个选项,但模拟器启动不了。
现在我手头上还留着两台装有iOS5的设备没有升级,以备测试。
但我觉得用iOS5的也不会太多,毕竟已经差了两代了。苹果都在开发工具中移除iOS5模拟器了,就是告诉你,别去管iOS5了。:12:
我是因为身边的亲朋还有人用iOS5的,所以我一直是最低支持到iOS5。

学习了:7::7::7:

对对 我也是去年升级了系统和xcode后就不能用ios5了,一直没解决。不过现在ios5是很少了 。
看了下你们团队做的游戏,画面都很棒呀!

谢谢!:787:

mark 打算更新5.1:2: