【问题标题】:iOS UI causes crash after pushing/popping second view controlleriOS UI 在推送/弹出第二个视图控制器后导致崩溃
【发布时间】:2015-06-13 16:01:43
【问题描述】:

在我的 iOS 应用程序中,整个用户界面都是以编程方式编码的,这意味着没有 xib 或故事板。在我通过 UINavigationController 添加另一个视图控制器之前,一切正常。

第一个视图控制器运行良好,当第二个视图控制器被推送时,它也运行良好。但是在第二个视图控制器弹出并重新出现第一个视图控制器后,与用户界面的任何元素的任何交互都会导致应用程序崩溃。

知道是什么原因造成的吗?

更新:异常的截图

【问题讨论】:

  • 您的视图控制器可能正在引用已被释放的东西。您应该能够在调试器中运行应用程序,查看堆栈跟踪并确定问题。您是在问如何追踪它?
  • @PetahChristian:是的;没有具体的错误消息,我不知道如何按照您的建议进行跟踪。

标签: ios objective-c user-interface uinavigationcontroller


【解决方案1】:

应用崩溃时会生成崩溃日志。所有消息以及堆栈回溯都在那里。

您可以通过将设备连接到 Mac,然后打开“设备”窗口并查看设备日志来查看设备的崩溃日志。

但是在 Xcode 中进行调试会更容易,方法是连接您的设备,然后在设备上的 Xcode 中构建和运行它。

当应用程序崩溃(由于某些异常)时,Xcode 可以捕捉到这一点,并将控制权转移到调试器。

您可以在 Xcode 中添加一个异常断点,以便在发生异常时立即停止您的应用程序。

要添加异常断点,请切换到断点导航器。单击窗格底部的小 + 按钮,然后选择添加异常断点

一旦应用崩溃,您可以查看堆栈回溯。调用堆栈上的前几项可能在 Apple 的代码中,但稍稍靠后的是来自您的视图控制器的调用,显示了揭示问题的行。

至于具体的错误,可能有很多。除非您共享显示这些对象的属性以及它们被(取消)分配的位置的代码,否则我们无法提供具体帮助。

【讨论】:

  • 感谢您的回答。我添加了异常断点,但似乎找不到堆栈回溯。是各种线程的装配清单吗?
  • 是的。汇编代码是 Apple 的 SDK。如果您查看崩溃线程的调用列表,您会看到从 0 开始的数字。沿着列表向下工作,直到找到您自己的代码。
  • 谢谢。我想我找到了,虽然 (已添加到问题的屏幕截图) 的内容不多。不知道是什么原因造成的?
  • 启用 NSZombies。您可能正在访问已被取消引用并指向垃圾的内容(或者您以某种方式将对象的指针设置为 150)。
  • 我会尝试找出 NSZombies,但是你将对象的指针设置为 150 是什么意思?
猜你喜欢
  • 2014-07-09
  • 2011-01-21
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多