timer

作者: 流年易逝_李 | 来源:发表于2018-07-11 02:22 被阅读9次

    每个NSTimer其实是被添加在所在线程的runloop中,而runloop对timer是一种强持有关系。也就是说,此时的timer采取strong property的方式其实是不合理的。那么为什么Runloop要strong reference to a timer呢,首先,NSTimer的执行需要加到runloop中去。RunLoop有一个CFRunLoopTimerRef 是基于时间的触发器的类,它和 NSTimer 是toll-free bridged 的,可以混用。其包含一个时间长度和一个回调(函数指针)。当其加入到 RunLoop 时,RunLoop会注册对应的时间点,当时间点到时,RunLoop会被唤醒以执行那个回调(这就是为什么要强持有target)。

    相关文章

      网友评论

          本文标题:timer

          本文链接:https://www.haomeiwen.com/subject/qkscpftx.html