1. 在block内中,使用self或者类的成员变量,会导致self的引用计数被加1,引起循环引用,导致无法释放当前的self。
如下,
mMatchHead是我自定义的一个在VC中贴入的view,用了2个block来进行回调。
在withMinuteFinish:这个block中,出现了2个问题,导致循环引用。
第一个就是一眼看见的self,block中直接使用self是不对的。
第二个是,使用了currentScore,这个成员变量,即使不加self.xx,也会导致self引用计数被加1.
所以,解决方法是,
用bself的__block变量来代替。请对比上线两张图。self 和currentScore的改变。
2.第二个是,在程序内使用定时器,也会引起当前的对象被应用计数加1,无法到达dealloc来释放。
解决方法是,在
viewWillDisappear中暂停以及失效所有定时器。