Objective c 有人打电话给Dealoc,我不知道为什么

Objective c 有人打电话给Dealoc,我不知道为什么,objective-c,dealloc,Objective C,Dealloc,我有一个带有一些按钮、文本字段和方法的视图。当我加载视图时,切换到另一个视图,然后切换回,我的应用程序崩溃。我在每个方法中添加了一个NSLog,以查看崩溃之前的最后一个方法调用是什么,它是-(void)dealoc{ 我想知道为什么会调用这个方法?是不是每次重新加载视图时都会调用它?我已经仔细检查了我的代码,我肯定不会在任何地方调用它 编辑:发现我的问题,我正在释放一个用于存储视图的数组。由于@Darren,我跟踪了我的问题。当不再需要类并从内存中删除时,会调用Dealloc。 当视图中没有更

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

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



编辑:发现我的问题,我正在释放一个用于存储视图的数组。由于@Darren,我跟踪了我的问题。

当不再需要类并从内存中删除时,会调用Dealloc。 当视图中没有更多的指针时,它就会被解除分配

您如何切换到视图/从视图切换到视图


如果你设置了一个(强)指向视图的指针,则不会自动解除分配。

-dealoc
在对象的引用计数下降到0时被调用。若要查找问题,请找出调用了哪个对象的
-dealoc
。调用堆栈上的第二个方法是什么?第三个方法是
-dealoc
发送到e第一名


有几种方法可以解决这类问题。好的第一步是打开NSZombies(谷歌搜索)。这会让你知道你是否在发送消息(比如,
dealloc
)无效对象。通常,这会导致崩溃,但使用NSZombies时,您会收到一条很好的错误消息。

使用zombies,我发现我正在尝试取消分配一些已经取消分配的内容。它会给我十六进制值,但我不确定在哪里可以找到它?(我对Xcode比较陌生)。