由于此NSConcreteBlock错误,我的应用程序在3.1.3上崩溃。我读了the other post on this topic,答案是弱连接libSystem.B.dylib。
但是,我根本没有在我的应用程序中包含该库,我仍然遇到同样的错误。
还有什么可能导致这次崩溃?
这是日志:
代码类型:ARM(Native) 家长流程:launchd 1
日期/时间:2011-10-20 14:05:08.189 -0700 操作系统版本:iPhone OS 3.1.3(7E18) 报告版本:104
异常类型:EXC_BREAKPOINT(SIGTRAP) 例外代码:0x00000001,0xe7ffdefe 崩溃的线程:0
Dyld错误消息: 找不到符号:__ NSConcreteStackBlock 预期在:/usr/lib/libSystem.B.dylib Dyld版本:149
答案 0 :(得分:3)
但是,我根本没有在我的应用程序中包含该库,我仍然遇到同样的错误。
除了libSystem没有逃脱之外,因为它实现了标准C运行时库等。无论何时编译Objective-C程序,编译器都会自动链接libSystem。而且,如果您通过otool -L
检查系统框架(如UIKit或Foundation),您会发现它们也与libSystem相关联。
这意味着Bard Larson在this answer中描述的解决方案也适用于您。
答案 1 :(得分:1)
Blocks是iOS 4.0中引入的Objective-C语言功能 - 它永远不会在iOS 3.x上运行。
答案 2 :(得分:1)
你可能已经看过这个,但它仍然值得一试:http://longweekendmobile.com/2011/03/15/the-backwards-compatibility-blues-supporting-ios-3-1-4-2/
在那里他们说即使你不在代码中使用块,libSystem也会引用它们,因此弱链接libSystem也应该适合你。
答案 3 :(得分:-1)
在构建设置下,确保您的C / C ++编译器版本是LLVM GCC而不是GCC。
答案 4 :(得分:-1)
您可能没有使用任何基于块的方法,但您可能正在使用一些使用某些UIKit方法的方法,这些方法现在在内部使用基于块的方法。您可能需要检查以下内容:
正如其他人所说的那样,也许你可以将libSystem库作为最后的手段进行弱连接。
祝你好运