Objective c 已正确销毁已发布的UIViewController,但未调用其-(void)dealloc方法

Objective c 已正确销毁已发布的UIViewController,但未调用其-(void)dealloc方法,objective-c,ios,Objective C,Ios,当我释放UIViewController时,UIViewController被正确销毁,但其dealloc方法未被调用 如果UIViewController已销毁(在控制台中为零),则保留计数应为0,因此我希望调用-(void)dealloc方法 我还检查了UIViewController的子类,在不调用超类方法的情况下重写dealloc,但事实并非如此 这是我初始化它的方式: myViewController = [[MyViewController alloc] initWithViewCo

当我释放UIViewController时,UIViewController被正确销毁,但其dealloc方法未被调用

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

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

这是我初始化它的方式:

myViewController = [[MyViewController alloc] initWithViewController:statusPicker];
原因可能是什么? 谢谢

如果UIViewController已被销毁(在控制台中为零), 那么retain计数应该是0,因此我希望 -(void)要调用的dealoc方法

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

1) 对
UIViewController
的引用还有其他内容(例如:当您从a
pushViewController
B时,a得到了对B的引用)

2) 你的内存泄漏了

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


@Lefteris自动引用计数=否


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

该委托为nil意味着指向它的指针为nil。如果未调用dealloc,则无法正确释放它。@Lefteris Automatic Reference Counting=NOI还将添加一行,如“不要依赖于重新计数”-您不知道它是如何实现的!