奇怪的问题,由于块的支持iOS 3.1.3

因为我经常在3.1.3设备上testing我的应用程序,所以我不得不添加一个链接器标志“-weak_library /usr/lib/libSystem.B.dylib”来支持那里的块。 直到我刚刚开始添加一些来自苹果示例的gamecenter编码,这是没有问题的。 只有在模拟器中,当一个块(甚至是空的块)作为GC编码中的authenticationcallback被移交时,我在Apple的libs中深处发生了即时崩溃(EXC_BAD_ACCESS)。 当我提供零作为callback,GClogin工作正常,应用程序继续。 它在所有真实设备(iPad,iOS 4.3的iPhone,iOS 3.1.3的iPod – 当然不带GC)上都能正常工作。 当我删除链接器的弱链接标志时,它也将在模拟器中运行无问题。 有没有人知道那里发生了什么? 这不是一个令人满意的解决scheme,只在每次我想部署到我的古老iPod时添加链接器标志。

谢谢,habitoti

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

-weak_library /usr/lib/libSystem.B.dylib打破了iOS模拟器。 改用-weak-lSystem。

这实际上工作!