美文网首页
NSTimer的循环引用

NSTimer的循环引用

作者: 0fbf551ff6fb | 来源:发表于2019-03-19 14:29 被阅读0次

NSTimer循环引用

因为timer必须手动去除invalidate,所以self必须引用timer,这样就引用了timer

对于重复的timer来说,因为runloop一直引用timer,所以timer必须手动invalidate才能被释放,timer又强引用self,所以会导致self无法释放

解决方案

通过创建1个中间对象,timer持有中间对象,中间对象弱应用对象,在中间对象里面调用timer重复执行的方法,这样当前控制器可以释放self,在中间对象执行重复操作的时候,首先判断弱引用对象有没有被释放掉,如果被释放就置空timer。

runloop->timer    timer<---->self

相关文章

网友评论

      本文标题:NSTimer的循环引用

      本文链接:https://www.haomeiwen.com/subject/zabgmqtx.html