我对iOS开发相对较新,所以感谢您帮助找出我遇到的错误的根本原因。
我尝试使用Instruments(即Allocations-Zombie Profiler)调试错误,但我无法理解所呈现的调用堆栈。
这是用户界面链接的方式: TabBarController - > NavigationController - > TopPlacesTableViewController - > RecentPhotosTableViewController - > PhotoViewController
单击最后一个视图中的“后退”按钮(即PhotoViewController的后退按钮)时发生错误。此操作应该显示以前的RecentPhotosTableViewController,但是在viewWillAppear和ViewDidAppear的事件之间有时会访问未知的解除分配的对象。
此外,我有一个GenericTableViewController,它是TopPlacesTableViewController和RecentPhotosTableViewController的父级。子项在父项中设置NSMutableArray属性,该属性是在子项视图中加载的数据。
我目前正在使用iOS6和XCode4.5。
[更新:在控制台中,显示了这一行 - “[UIView _forgetDependentConstraint:]:发送到解除分配的实例xxx的消息”]。
答案 0 :(得分:0)
我觉得你没有使用ARC,而且你没有保留传递你以前的对象。在此期间,前一个对象被释放,然后您访问它。
您可以重构代码以使用ARC或保留或自动释放。
答案 1 :(得分:-1)
转到产品>编辑方案>诊断点击然后检查启用Zombie对象
制定一个断点,然后一步一步地知道哪个对象被解除分配,也许已经删除了指向你对象的指针,然后操作系统已经解除了你的对象。