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对象
浙公网安备 33010602011771号