CADisplayLink : 保证调用频率和品目刷新频率一致
NSTimer : 和runloop相关,之前的文章讲过,runloop会持有定时器. 1. 循环引用
CADisplayLink,NSTimer 会对target(一般是VC)产生强引用,而一般target也会持有这个定时器,因为要在合适的时机停止定时器,并且把定时器置为nil.
这样target和定时器相互持有,就会产生循环引用
2. 解除循环引用
解除引用闭环,引入一个第三方.
让定时器持有这个第三方对象.当定时器调用方法时,让这个第三方对象调用控制器里的相应方法.
2. 利用消息转发机制 然后消息转发给能处理的对象
也可以这样
3. 使用带有block的定时器
注意用__weak来修饰self
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)