由于iOS 3.1.3不支持块(block),导致奇怪的问题

3
由于我经常在3.1.3设备上测试我的应用程序,因此我不得不添加一个链接器标志“-weak_library /usr/lib/libSystem.B.dylib”来支持那里的块。这没有问题,直到我刚开始从苹果样本中添加一些gamecenter编码。只有在模拟器中,当一个块(甚至是空块)被作为GC编码中的认证回调传递时,我就遇到了一个深入Apple库的瞬间崩溃(EXC_BAD_ACCESS)。当我提供nil作为回调时,GC登录正常工作,应用程序继续运行。
尽管如此,在所有真实设备上都可以正常工作(iPad、iOS 4.3的iPhone、iOS 3.1.3的iPod——当然没有GC)。当我删除链接器的弱链接标志时,它也会在模拟器中无问题运行。
有人知道发生了什么吗?每次想部署到我的古老iPod时,这不是一个令人满意的解决方案,只添加链接器标志。
谢谢,habitoti

问题只是iOS模拟器中的一个错误。在设备上,代码运行良好。我已经在苹果的错误报告程序中提交了一个雷达(radar://9470793)。 - gcamp
1个回答

5

一位苹果工程师知道正确的答案:

-weak_library /usr/lib/libSystem.B.dylib 会破坏 iOS 模拟器。请使用 -weak-lSystem 代替。

这个方法真的有效!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接