1.检查控制器中的代理属性是不是weak。如果用的是strong会造成controller被强引用而释放不掉。
2.检查NSTimer有没有销毁,要在viewWillDisappear之前把控制器用到的NSTimer全部销毁。
注意:如果用到了CADisplayLink也要销毁。
3.检查block的使用。block会对方法中的变量自动retain一次,使用__weak typeof(self) mySelf = self,在block里面的self引用改成mySelf 。
4.我最近在项目中碰到的一个比较小众的情况,我在MainViewController中用到了UIPopoverController (下图中右下角点击弹出来的那个VC)。
这个UIPopoverController比较神奇,不是在点击收回的时候销毁(而是在下次点击之前),因此在dismiss自己的MainViewController之前先要手动把这个UIPopoverController销毁。