gpt4 book ai didi

objective-c - iOS 应用程序在使用 Xcode 4.2 和 iOS 5 进入 main() 之前崩溃

转载 作者:太空狗 更新时间:2023-10-30 03:20:26 25 4
gpt4 key购买 nike

背景

升级后//我在应用程序加载时遇到崩溃,它甚至进入 main() 之前。

我在 main() 中设置了一个断点,但它从未达到。

main() break point

  • 使用 4.3 的 Base SDK 在 Xcode 4.1 中编译项目在 iOS 4.x 和 iOS 5 上运行良好。
  • 使用 5.0 的 Base SDK 在 Xcode 4.2 中编译同一项目在 4.x 上运行良好,但在 iOS 5 中崩溃,无论是在模拟器上还是在设备上。

模拟器崩溃

iOS 5 Simulator LLDB Crash Xcode 4.2 Output

EXC_BAD_ACCESS 而崩溃

Stack calls

调用列表,所有的系统调用,连main()都还没有被调用。

我最好的猜测是加载库时出现问题,但知道如何追踪它!

尝试解决

  1. 打开僵尸
  2. 打开所有日志记录
  3. 添加了不同版本的系统库(libz.1.2.5.dylib 和 libz.dylib)
  4. 清理项目
  5. 从模拟器中删除了 App
  6. 删除 Derived Data 文件夹

最佳答案

您的部署目标是什么?

我的部署目标是 iOS4.0。我改成iOS4.3,问题解决了! (当然是针对 iOS5 GM SDK 构建的。)我的应用程序现在可以在 iOS5 模拟器中运行。

我从 an answer in another SO thread 得到这个想法那说ARC在iOS4.3及以上版本中受支持。据我所知,我的应用程序不使用 ARC,也不使用它的任何依赖库。答案还提到了一些关于弱引用置零的内容,这似乎......也许是相关的,因为很多人已经成功地删除了有关对 libSystem.B.dylib 的弱引用的特定链接器指令。

让我有点困扰的是,我必须将我的基础部署目标提高到 4.0 以上,因为这感觉就像我正在削减很多潜在用户。尽管 Apple 希望每个人都能始终升级他们的设备,但很多人并没有这样做。好吧。

编辑

值得一提的是,这个项目最初是在 Xcode3 下完成的,所以项目本身可能只是一些不需要的奇怪的东西,并导致了这个问题。但如果我能找到它,我会被诅咒!

编辑2

好吧,好吧...经过进一步检查...我在我的 project.pbxproj 文件中发现了 2 个对 libSystem.B.dylib 的错误引用,这些引用在 Xcode 的build设置中不可见,但我必须通过使用文本编辑器!

执行此操作后,我将基础部署版本重置为 4.0,为 iOS5 模拟器构建,应用程序运行正常。

太棒了。

教训:永远不要低估项目文件中存在垃圾的可能性。

编辑 3

Xcode project edit

在 Xcode 项目包内的 project.pbxproj 文件中删除这些行的 3 次出现(右键单击并显示包内容)。

show package contents

关于objective-c - iOS 应用程序在使用 Xcode 4.2 和 iOS 5 进入 main() 之前崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com