在使用发布版本配置进行编译时,应用程序会立即在iOS 3.x上崩溃

时间:2010-09-24 11:02:14

标签: iphone crash ios4 app-startup

我面临着相当“神秘”的问题。我的应用程序适用于运行iOS 4.x的设备上的所有构建配置,但在启动后立即在运行iOS 3.x的iPhone上崩溃,但仅在使用Release配置进行编译时崩溃。使用Debug配置,它运行时没有任何问题。

我花了很多时间调查可能的原因,但到目前为止并不幸运。我正在使用XCode 3.2.4和基本SDK iOS 4.1,使用LLVM GCC编译器。根据崩溃日志,应用程序在applicationDidFinishLaunching:方法实现中的第一行代码崩溃,其中只调用简单的[[SomeObject alloc] init],报告EXC_BAD_ACCES,表明alloc方法没有正确分配实例(?)

当我切换到GCC 4.2编译器时,崩溃日志完全报告崩溃原因的其他地方,但我认为这是完全相同的......

我想我错过了一些编译器或链接器标志左右,但无法找出哪个。我已经尝试了迄今为止我发现的所有建议的解决方案,但没有任何帮助。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您是否在发布版本中使用LLVM编译器?根据我的经验,LLVM编译器将弱链接API调用。这允许3.x应用程序运行,即使它具有4.x API调用,只要这些调用永远不会执行。当动态加载程序尝试解析4.x API时,使用GCC编译的应用程序将在启动时崩溃。