我有一个支持ARC lite的应用程序(启用了ARC而没有归零弱引用,Apple LLVM 4.0)。部署目标设置为iOS 4.0。它已经在iOS 4.0到5.1.1上进行了测试。当我使用调试版本并通过Xcode安装时,它总能正常工作,但是当我使用发布配置创建一个adhoc版本时,它总是会在使用iOS 4.2.1的第二代iPod上启动时崩溃,但在其他设备上工作正常(甚至第三代)带iOS 4.3的iPod。)
崩溃日志说 找不到符号:_objc_retainAutoreleasedReturnValue 当调用方法main时它会崩溃(然后是dyld_stub_binder,dyld :: fastBindLazySymbol)
我进行了一些搜索,这种崩溃通常发生在没有弧的项目中包含启用弧的库时。但就我而言,整个项目都启用了弧。
任何线索?
非常感谢。
[编辑]更新:我可以使用NSLog来调试adhoc构建。
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(@“输入自动释放池后确定”)被成功调用,但是应用程序:didFinishLaunchingWithOptions:永远不会被输入。
答案 0 :(得分:1)
它似乎与命令行构建工具有关。我曾经使用xcodebuild命令来存档adhoc构建: xcodebuild -scheme myscheme clean build archive
发生了这次事故。
然后我尝试从Xcode归档,adhoc构建实际上在所有设备上都能正常工作。太奇怪了(请记住,adhoc命令行适用于比iPod 2nd更新的设备)。
现在我只使用Xcode中的Archive按钮。但我在Apple dev论坛上发布了这个问题: https://devforums.apple.com/message/711334
答案 1 :(得分:0)
我的回答:我是如何从同一问题中解脱出来的。
<强>步骤:强>
1.首先在代码符号列中进行所有更改,并确保所有设置在项目选项卡和目标选项卡中都可以正常工作。
2.只需在第一步中完成所有设置,如选择正确的提示并指定准确的束限制,然后现在使xcode退出。
3.完成2步后,只需重新启动计算机,然后为您在第一步中选择的配置文件进行构建。
现在它的工作正常,希望所以这个答案可能对你有所帮助。无论如何它是我对上述问题的解决方案..... :)