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

hab*_*oti 3 iphone sdk ios objective-c-blocks

因为我经常在3.1.3设备上测试我的应用程序,所以我必须添加一个链接标志"-weak_library /usr/lib/libSystem.B.dylib"来支持那里的块.直到我开始从Apple样本中添加一些游戏中心编码之后,这才成问题.只有在模拟器中,当一个块(甚至是一个空块)作为GC编码中的认证回调被移交时,我才会在Apple的libs深处遇到一个瞬间崩溃(EXC_BAD_ACCESS).当我提供nil作为回调时,GC登录工作正常,应用程序继续.虽然在所有真实设备上都可以正常工作(iPad,带有iOS 4.3的iPhone,带有iOS 3.1.3的iPod - 当然还有GC).当我删除链接器的弱链接标志时,它也将在模拟器中运行w/o问题.有没有人知道那里发生了什么?这不是一个令人满意的解决方案,只有在我想要部署到我的古老iPod时才添加链接器标志.

谢谢,habitoti

hab*_*oti 5

Apple工程师知道正确答案:

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

这实际上有效!