12.01-内存管理

12.01-内存管理,第1张

文章目录 1. 循环引用2. 解除循环引用1.直接调用方法2. 利用消息转发机制3. 使用带有block的定时器
CADisplayLink : 保证调用频率和品目刷新频率一致
NSTimer : 和runloop相关,之前的文章讲过,runloop会持有定时器.

1. 循环引用

CADisplayLink,NSTimer 会对target(一般是VC)产生强引用,而一般target也会持有这个定时器,因为要在合适的时机停止定时器,并且把定时器置为nil.
这样target和定时器相互持有,就会产生循环引用


2. 解除循环引用


解除引用闭环,引入一个第三方.
让定时器持有这个第三方对象.当定时器调用方法时,让这个第三方对象调用控制器里的相应方法.

1.直接调用方法

第三方中调用方法


2. 利用消息转发机制

然后消息转发给能处理的对象
也可以这样

3. 使用带有block的定时器

注意用__weak来修饰self

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/996809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存