Objective-C消息被发送到地址为0x75d52a0的解除分配对象(僵尸)

use*_*383 6 xcode objective-c dealloc nszombie ios

我对iOS开发相对较新,所以感谢您帮助找出我遇到的错误的根本原因.

我尝试使用Instruments(即Allocations-Zombie Profiler)调试错误,但我无法理解所呈现的调用堆栈.

这是用户界面链接的方式:TabBarController - > NavigationController - > TopPlacesTableViewController - > RecentPhotosTableViewController - > PhotoViewController

单击最后一个视图中的"后退"按钮(即PhotoViewController的后退按钮)时发生错误.此操作应该显示以前的RecentPhotosTableViewController,但是在viewWillAppear和ViewDidAppear的事件之间的某个时间访问了未知的解除分配的对象.

另外,我有一个GenericTableViewController,它是TopPlacesTableViewController和RecentPhotosTableViewController的父级.子项在父项中设置NSMutableArray属性,该属性是在子视图中加载的数据.

我目前正在使用iOS6和XCode4.5.

[更新:在控制台中,此行显示 - "[UIView _forgetDependentConstraint:]:发送到解除分配的实例xxx的消息"].

Ano*_*dya 0

我觉得你没有使用 ARC,并且你没有保留传递你以前的对象。与此同时,前一个对象被释放,然后您可以访问它。

您可以重构代码以使用 ARC 或放置保留或自动释放。