0

我有一些按钮、文本字段和方法的视图。当我加载视图,切换到另一个视图,然后切换回来时,我的应用程序崩溃了。我NSLog在每个方法中添加了一个,以查看崩溃前的最后一个方法调用是什么,它是-(void)dealloc{

我想知道为什么调用此方法?每次重新加载视图时都会调用它吗?我已经仔细检查了我的代码,我绝对不会在任何地方调用它。


编辑:发现我的问题,我正在发布一个用于存储视图的数组。感谢@Darren,我找到了我的问题。

4

2 回答 2

0

当不再需要某个类并将其从内存中删除时,将调用 Dealloc。当您没有更多指针指向视图中的任何内容时,它就会被释放。

你如何切换到/从视图?

如果你设置了一个指向视图的(强)指针,那么它不会被自动释放。

于 2012-07-16T21:52:46.423 回答
0

-dealloc每当对象的引用计数降至 0 时都会调用它。要找出您的问题,请找出-dealloc调用了什么对象。调用堆栈上的第二种方法是什么?第三?首先被-dealloc发送到一个有效的对象指针?

有几种方法可以处理这种事情。一个好的第一步是打开 NSZombies(谷歌)。dealloc如果您正在向无效对象发送消息(例如,),这会让您知道。通常,这会导致崩溃,但使用 NSZombies 你会得到一个很好的错误消息。

于 2012-07-16T21:52:46.447 回答