6

我对 iOS 开发比较陌生,因此感谢您帮助找出我遇到的错误的根本原因。

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

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

当我单击最后一个视图(即 PhotoViewController 的那个)中的返回按钮时,会发生错误。这个动作应该显示以前的RecentPhotosTableViewController,但访问了一个未知的已释放对象,有时在viewWillAppear 和ViewDidAppear 事件之间。

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

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

[更新:在控制台中,显示了这一行 - “[UIView _forgetDependentConstraint:]: message sent to deallocated instance xxx”]。

4

2 回答 2

0

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

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

于 2012-12-06T08:11:38.083 回答
-1

转到产品>编辑方案>诊断点击然后检查启用僵尸对象

创建一个断点并逐步了解哪个对象被释放,它可能指向您的对象的指针已被删除,然后操作系统已释放您的对象。

于 2012-12-06T08:59:08.213 回答