0

我面临着相当“神秘”的问题。我的应用程序适用于运行 iOS 4.x 的设备上的所有构建配置,但它在启动后立即在运行 iOS 3.x 的 iPhone 上崩溃,但仅在使用发布配置编译时。但是,使用 Debug config 可以毫无问题地运行。

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

当我切换到 GCC 4.2 编译器时,崩溃日志完全报告崩溃起源的其他地方,但我认为这完全一样......

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

谢谢你的帮助。

4

1 回答 1

1

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

于 2010-12-09T21:03:44.783 回答