【问题标题】:App Crashing before view is loaded iOS > 6加载视图之前应用程序崩溃 iOS > 6
【发布时间】:2012-10-12 22:20:22
【问题描述】:

我的 iOS 应用程序在 iOS 5 和 iOS 6 上运行,但专注于 6 的功能。我最近尝试在 iOS 5.1 模拟器中测试我的应用程序(基础 SDK 为 5.0),它似乎工作正常,直到我点击在显示具有不同类的新视图控制器的按钮上。此时它崩溃了,我在输出日志中只剩下这个:

objc[3063]: EXCEPTIONS: throwing 0x9e85510 (object 0x9e84780, a NSException)
objc[3063]: EXCEPTIONS: searching through frame [ip=0x6d6a19 sp=0xbfffe020] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: searching through frame [ip=0x223dd83 sp=0xbffff200] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: unwinding through frame [ip=0x6d6a19 sp=0xbfffe020] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: unwinding through frame [ip=0x223dd83 sp=0xbffff200] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: handling exception 0x9e854f0 at 0x223de16
objc[3063]: EXCEPTIONS: rethrowing current exception
objc[3063]: EXCEPTIONS: searching through frame [ip=0x223dddf sp=0xbffff200] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: terminating
objc[3063]: EXCEPTIONS: searching through frame [ip=0x158eeed sp=0xbffff190] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: catch(id)
objc[3063]: EXCEPTIONS: unwinding through frame [ip=0x158eeed sp=0xbffff190] for exception 0x9e854f0
objc[3063]: EXCEPTIONS: handling exception 0x9e854f0 at 0x158eeff

就是这样。我还在正在加载的类的标头和实现中设置了断点,并且没有一个断点被命中,这意味着应用程序在加载视图之前崩溃了。

我从来没有见过这样的事情,但是我做了一些研究,谷歌发现了一些与 NSArrays 和 NSPredicate 相关的东西(我的班级确实有),但我排除了这些解决方案,因为视图从未加载- 那么尚未分配/创建的 NSArray 怎么会导致我的应用程序崩溃呢?

我们将不胜感激任何提示、答案和帮助!

编辑
我的项目使用:

  • 故事板
  • Xcode 4.5
  • ARC
  • 基础 SDK 为 iOS 5.0

没有额外的错误日志、调试消息等。以上是我得到的全部。我还尝试在某些我认为可能有问题的语句周围使用@try / @catch 条件,但是它们要么从未被调用,要么没有引发异常。

我的(id)init 方法也永远不会被调用。

我开始认为这又是那些奇怪的 Xcode 4 编译器问题之一......

编辑: 我还确保禁用了自动布局(尽管我不确定这是否是禁用它的正确位置,这是在 Navigator > File Inspector 中):

【问题讨论】:

  • 代码执行是否在loadView之前到达视图控制器的init方法?
  • @RobertKarl 如果init 你的意思是(id)init 那么没有。它什么都没有。
  • 如果将按钮点击代码包装在@try/@catch 中并查看@catch 中是否有异常描述或调用堆栈符号?
  • @PhillipMills 我的项目使用情节提要,因此没有与按钮按下相关的“代码”。我在故事板中搜索了问题和未连接的插座等,但没有找到。我已经尝试包装所有我认为在 try / catch 中可能存在问题的不同语句,但这没有帮助。
  • 我的镜头:您已为您的 xibs/storyboards 中的 uiviews 激活了自动布局,这是 iOS6 独有的功能。

标签: objective-c exception ios5 crash


【解决方案1】:

我真的还是不明白这个错误,但是使用名为Crittercism的第三方崩溃报告SDK我发现了这个错误:

我试图初始化仅在 iOS 6 或更高版本中可用的 UICollectionView。奇怪的是 Xcode 似乎 随机 决定告诉我这件事,因为在早期的构建中我使用了 UICollectionView 并在 5.1 模拟器中成功运行了该项目(当然我使用代码将其替换为表视图)。对我来说,编译器甚至没有达到 initviewDidLoad 方法似乎很奇怪。

我从 Xcode 4.5 (Release, not Developer) 更新到 4.5.1 后才出现这个问题

【讨论】:

  • 您是否将您的 xib 文件的“文档版本控制”字段设置为 iOS 5.0 的“部署”? (单击 XCode 中的 xib,然后单击实用工具窗格中最左侧的“文档”图标。)每个 xib 都有自己的目标 iOS,可能与项目的不同,并且可能会引起编译器更好的警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
相关资源
最近更新 更多