NSTimer和target之间的关系解除

2020-08-10  本文已影响0人  格雷s

问题思考

NStimer最为iOS开发中最常见的定时器,使用简单方便,但是在处理NStimer和target相互引用的问题时,需要提高警惕。因为NSTimer持有target,NStimer被runloop持有,导致如果不手动关掉NStimer对象,就会导致NSTimer和target的泄漏,而且因为这种关系,导致target的dealloc方法是不会执行的,但是想要造一个合适的时机去执行NSTimer的失效,手动去处理就比较费劲,比如在ViewDidDisappear,你需要去判断当前页面是pop还是Push

解决思路

为了解决NStimer和Target之间的这种关系,我们需要让target可以执行其dealloc方法,然后我们在dealloc方法中执行[NStimer invalidate]

解决办法

关系图展示

image.png
上一篇 下一篇

猜你喜欢

热点阅读