iOS的视图控制器pop或dismiss后,dealloc函数不被调用的几个原因

当视图控制器执行popViewControllerAnimated或dismissViewControllerAnimated方法后,dealloc函数始终未被调用时,可能是由以下几点当中的某一点或几点引起的:

(1)初始化某个UIView时,使用strong修饰词修饰该view的某个属性,导致强持有当前视图控制器,从而造成循环引用,引起内存泄漏;

(2)ViewController中强引用代理(delegate),应该使用weak修饰词来修饰;

(3)ViewController中使用了block,且存在循环引用。使用__weak修饰;

(4)ViewController中创建了定时器NSTimer,导致引用计数+1.解决方法是在viewWillDisappear中执行[_timer invalidate]和_timer=nil.

你可能感兴趣的:(iOS的视图控制器pop或dismiss后,dealloc函数不被调用的几个原因)