Objective c 已正确销毁已发布的UIViewController,但未调用其-(void)dealloc方法
当我释放UIViewController时,UIViewController被正确销毁,但其dealloc方法未被调用 如果UIViewController已销毁(在控制台中为零),则保留计数应为0,因此我希望调用Objective c 已正确销毁已发布的UIViewController,但未调用其-(void)dealloc方法,objective-c,ios,Objective C,Ios,当我释放UIViewController时,UIViewController被正确销毁,但其dealloc方法未被调用 如果UIViewController已销毁(在控制台中为零),则保留计数应为0,因此我希望调用-(void)dealloc方法 我还检查了UIViewController的子类,在不调用超类方法的情况下重写dealloc,但事实并非如此 这是我初始化它的方式: myViewController = [[MyViewController alloc] initWithViewCo
-(void)dealloc
方法
我还检查了UIViewController的子类,在不调用超类方法的情况下重写dealloc,但事实并非如此
这是我初始化它的方式:
myViewController = [[MyViewController alloc] initWithViewController:statusPicker];
原因可能是什么?
谢谢
如果UIViewController已被销毁(在控制台中为零),
那么retain计数应该是0,因此我希望
-(void)要调用的dealoc方法
嗯,不。为nil
的事实并不意味着UIViewController
已经发布。简单地说,UIViewController
的指针现在指向nil
,但是UIViewController
所在的内存仍然被占用。可能会发生两件事,而不是调用dealloc
:
1) 对UIViewController
的引用还有其他内容(例如:当您从apushViewController
B时,a得到了对B的引用)
2) 你的内存泄漏了
我再次根据你所说的回答:
@Lefteris自动引用计数=否
检查您是否没有任何循环引用。例如,如果视图控制器实现了委托协议,请检查代码是否没有保留该委托。该委托为nil意味着指向它的指针为nil。如果未调用dealloc,则无法正确释放它。@Lefteris Automatic Reference Counting=NOI还将添加一行,如“不要依赖于重新计数”-您不知道它是如何实现的!