已发布的U​​IViewController被正确销毁,但未调用其 - (void)dealloc方法

时间:2012-10-09 10:29:03

标签: objective-c ios

当我发布UIViewController时,UIViewController被正确销毁,但是没有调用它的dealloc方法。

如果UIViewController已被销毁(在控制台中为nil),则保留计数应为0,因此我希望调用-(void)dealloc方法。

我还检查了我的UIViewController的子类,在不调用超类方法的情况下覆盖了dealloc,但事实并非如此。

这是我初始化它的方式:

myViewController = [[MyViewController alloc] initWithViewController:statusPicker];

可能是什么原因? 感谢

2 个答案:

答案 0 :(得分:2)

  

如果UIViewController已被破坏(在控制台中为零),   那么保留计数应该是0,因此我期待    - (void)要调用的dealloc方法。

嗯,不。 nil的事实并不意味着UIViewController已被释放。简单来说,UIViewController的指针现在指向nil,但UIViewController所在的内存仍然被占用。不是被称为dealloc,而是可能发生两件事:

1)还有一些引用UIViewController的内容(例如:当你从A pushViewController B时,A得到了对B的引用。)

2)你有内存泄漏。

我再次根据你的说法做出答案:

  

@Lefteris自动参考计数=否

答案 1 :(得分:0)

检查您是否有任何循环引用。例如,如果您的视图控制器实现了委托协议,请检查您的代码是否未保留此委托。