0

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

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

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

这就是我初始化它的方式:

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

可能是什么原因 ?谢谢

4

2 回答 2

2

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

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

1)还有其他东西引用了UIViewController(例如:当你pushViewController从A中获得B时,A得到了对B的引用)。

2)你有内存泄漏。

我再次根据您所说的回答:

@Lefteris 自动参考计数 = 否

于 2012-10-09T10:56:52.360 回答
0

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

于 2012-10-09T16:24:55.433 回答