dealloc被调用,我不知道为什么

时间:2012-07-16 21:47:29

标签: objective-c dealloc

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

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


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

2 个答案:

答案 0 :(得分:0)

当不再需要类并从内存中删除时调用Dealloc。 当你没有更多的指针持有视图中的任何东西时,它就被处理了。

您如何切换到视图?

如果你设置一个(强)指向视图的指针,它将不会自动处理。

答案 1 :(得分:0)

只要对象的引用计数降为0,就会调用

-dealloc。要找到问题,请确定调用了哪个对象-dealloc。调用堆栈的第二种方法是什么?第三?是-dealloc首先发送到有效的对象指针吗?

有几种方法可以解决这类问题。一个好的第一步是打开NSZombies(谷歌为它)。如果您向无效对象发送消息(例如,dealloc),则会告诉您。通常,这会导致崩溃,但使用NSZombies,您将收到一条很好的错误消息。