我有一个启用了 ARC 的应用程序(启用了 ARC 而没有将弱引用归零,Apple LLVM 4.0)。部署目标设置为 iOS 4.0。它已经在 iOS 4.0 到 5.1.1 上进行了测试。当我使用调试构建并通过 Xcode 安装时,它总是可以正常工作,但是当我使用发布配置创建临时构建时,它总是在使用 iOS 4.2.1 的第二代 iPod 上启动时崩溃,但在其他设备上运行良好(甚至是第三代装有 iOS 4.3 的 iPod)。
崩溃日志显示未找到符号:_objc_retainAutoreleasedReturnValue 并且在调用 main 方法时崩溃(然后是 dyld_stub_binder,dyld::fastBindLazySymbol)
我做了一些搜索,当一个启用弧的库包含在没有弧的项目中时,通常会发生这种崩溃。但在我的情况下,整个项目都启用了弧。
有什么线索吗?
非常感谢。
[编辑] 更新:我可以使用 NSLog 来调试临时构建。
main.m 是这样的:
int main(int argc, char *argv[]) {
NSLog(@"ok before entering autorelease pool");
@autoreleasepool {
NSLog(@"ok after entering autorelease pool");
return UIApplicationMain(argc, argv, nil, NSStringFromClass([XXX class]));
}
}
NSLog(@"ok after into autorelease pool") 被成功调用,但 application:didFinishLaunchingWithOptions: 从未进入。