CADisplaylnk NSTimer使用注意点,打破CADisplaylnk NSTimer造成的循环引用

CADisplaylnk NSTimer 会对target强引用,造成循环引用 target <->NSTimer

打破循环引用的三种方案:

1.在viewDidDisapper 停止定时器 至为nil

  原理:暴力打破

2.使用直接调用block方法 NSTimer方法  

     原理: NSTimer->block弱引用->sef

3.引入中间对象 SSProxy   

     原理:VC->NSTimer->SSProxy弱引用->VC  配合消息转发forwardingTargetForSelector优雅的解决

 

延伸NSProxy了解下

1.专门用于消息转发,直接进入消息转发,少了从父类中查找方法,消息解析的流程,效率更高。

2.直接实现这两消息转发方法methodSignatureForSelector,forwardInvocation

3.SSProxy ,NSProxy 区别,NSProxy特点会将大部分方法都转发给target对象

 

posted @ 2021-05-27 10:44  syh-918  阅读(75)  评论(0)    收藏  举报