CADisplayLink 前世今生
摘要
iOS 10新增了内存泄漏检测方法,但会出现循环引用问题。解决方法是引入一个中间target,并让其对控制器B是弱引用。另外,子线程的运行循环需要手动开启,并使用不同的mode处理不同的输入源,包括定时器源和输入源。
RunLoop
包含若干个Mode
,每个Mode
又包含若干个Source/Timer/Observer
,每次调用RunLoop
的主函数时,只能指定一个Mode
运行。RunLoop
中的事件产生地点是Source
,有两个版本,source0
和source1
,需要手动调用CFRunLoopSourceSignal
标记待处理事件。
欢迎在评论区写下你对这篇文章的看法。