以前工作的代码仅在iOS5中作为静态库与EXC_BAD_ACCESS代码= 1崩溃

时间:2012-10-15 16:16:15

标签: objective-c ios background location static-libraries

所以我使用Kyle发布的通用框架项目将许多类捆绑在一起作为静态框架:https://github.com/kstenerud/iOS-Universal-Framework

事情在iOS 5.0上编译并运行得很好,直到6.0,并且已经持续了几个月 - 我通常只是将生成的框架复制到我的项目中,将其链接起来并使用它。它对大多数类都使用ARC。

最近,我在xcode 4.5中从头创建了一个静态库项目,并将框架中的所有类复制到其中。它直接编译,我添加它的项目(之前与框架一起使用),但是当我在iPhone 4上使用iOS 5.1.1运行它时,它在运行时崩溃时出现EXC_BAD_ACCESS消息并且没有突出显示任何与崩溃相关的特定代码。在iOS 6.0模拟器上运行良好,而iPhone 4S运行iOS 6。

我发现最多的是错误发生在一个(相当大的)块中,该块注册为后台进程并使用位置管理器。我目前正在重新安装5.1模拟器,看看是否也崩溃了。

我可能不知道静态库和静态框架的处理方式有什么重大差异吗?在这方面,iOS 5和6之间有任何显着差异吗?我已经玩过一些链接器标志,包括-ObjC和-all_load。是否有任何代码或错误字符串可以帮助我发布?我还没有包含任何内容,因为我不完全确定问题出在哪里......

1 个答案:

答案 0 :(得分:2)

在对苹果开发板进行一些讨论之后,我们发现我在项目构建设置中使用iOS 6.0的iOS部署目标编译静态库。将其切换到iOS 5.0并且瞧,它可以在任何地方使用。

要明确未来遇到此问题的人(使用Xcode 4.5:在文件树中单击您的根Xcode项目,然后单击您的项目名称(而不是您的目标),然后在“信息”选项卡下查找显示“iOS部署目标”的下拉菜单并将其切换到您要支持的最低操作系统版本。