当我发布UIViewController时,UIViewController被正确销毁,但是没有调用它的dealloc方法。
如果UIViewController已被销毁(在控制台中为nil),则保留计数应为0,因此我希望调用-(void)dealloc
方法。
我还检查了我的UIViewController的子类,在不调用超类方法的情况下覆盖了dealloc,但事实并非如此。
这是我初始化它的方式:
myViewController = [[MyViewController alloc] initWithViewController:statusPicker];
可能是什么原因? 感谢
答案 0 :(得分:2)
如果UIViewController已被破坏(在控制台中为零), 那么保留计数应该是0,因此我期待 - (void)要调用的dealloc方法。
嗯,不。 nil
的事实并不意味着UIViewController
已被释放。简单来说,UIViewController
的指针现在指向nil
,但UIViewController
所在的内存仍然被占用。不是被称为dealloc
,而是可能发生两件事:
1)还有一些引用UIViewController
的内容(例如:当你从A pushViewController
B时,A得到了对B的引用。)
2)你有内存泄漏。
我再次根据你的说法做出答案:
@Lefteris自动参考计数=否
答案 1 :(得分:0)
检查您是否有任何循环引用。例如,如果您的视图控制器实现了委托协议,请检查您的代码是否未保留此委托。