推/弹出第二视图控制器后,iOS UI导致崩溃

推/弹出第二视图控制器后,iOS UI导致崩溃,ios,objective-c,user-interface,uinavigationcontroller,Ios,Objective C,User Interface,Uinavigationcontroller,在我的iOS应用程序中,整个用户界面都是以编程方式编写的,这意味着没有XIB或故事板。在我通过UINavigationController添加另一个视图控制器之前,所有这些都可以正常工作 第一个视图控制器工作正常,推送第二个视图控制器时,它也工作正常。但在第二个视图控制器自动弹出,第一个视图控制器重新出现后,与用户界面任何元素的任何交互都会使应用程序崩溃 你知道这是什么原因吗 更新:异常屏幕截图应用程序崩溃时会生成一个崩溃日志。所有消息以及堆栈回溯都在那里 通过将设备连接到Mac,然后打开“设备

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

第一个视图控制器工作正常,推送第二个视图控制器时,它也工作正常。但在第二个视图控制器自动弹出,第一个视图控制器重新出现后,与用户界面任何元素的任何交互都会使应用程序崩溃

你知道这是什么原因吗


更新:异常屏幕截图

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

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

但是,只需在Xcode中调试,通过连接设备,然后在设备上的Xcode中构建并运行它,就更容易了

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

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

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

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


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

您的视图控制器可能引用了已取消分配的内容。您应该能够在调试器中运行应用程序,查看堆栈跟踪,并确定问题。你是在问如何找到这个吗?@PetahChristian:是的;没有特定的错误消息,我不知道如何按照您的建议进行跟踪。谢谢您的回答。我添加了异常断点,但似乎找不到堆栈回溯。是包含各种线程的程序集列表吗?是的。汇编代码是苹果的SDK。如果查看崩溃线程的调用列表,您将看到从0开始的数字。写下清单,直到你找到自己的代码。谢谢。我想我找到了它,虽然没什么可谈的(问题中增加了截图)。没有办法知道是什么导致的?启用NSZombies。您可能正在访问已取消引用并指向垃圾的对象(或者您以某种方式将对象指针设置为150)。我将尝试找出NSZombies,但将对象指针设置为150是什么意思?