CCWeakTimer 0.0.1

CCWeakTimer 0.0.1

ai mac 维护。



  • 作者
  • CC (deng you hua)

CCWeakTimer (来自 MSWeakTimer 的微调)

描述

是[线程安全的 NSTimer 钩子替代品,不会保留目标,并支持与 GCD 队列一起使用。

动机

这个类首次提出的动机是拥有一种可以被对象 持有 和保留的计时器类型,而不创建保留周期(就像 NSTimer 造成的,因为它会保留其目标)。这样,您只需在拥有计时器的对象类的 -dealloc 方法中释放计时器即可。

当使用 NSTimer 时遇到的其他问题是文档中的以下说明

特殊注意事项

您必须从安装计时器的线程发送这个消息。如果从另一个线程发送此消息,计时器相关联的输入源可能不会被从其运行循环中删除,这可能导致线程无法正常退出。

很多时候,一个对象需要创建一个计时器,在某个事件发生时将其无效化。但是,当该对象与私有 GCD 队列一起工作时,这会很复杂。这个计时器对象是线程安全的,没有运行循环的概念,因此它可以与 GCD 队列一起使用,并可以从任何线程或队列中进行安装/无效化。

实现

CCWeakTimer 的实现已经过 WWDC 2013 核心操作系统实验室的 libdispatch (GCD) 工程师审查和验证。

如何使用

使用这个类方法创建一个 CCWeakTimer 对象

+ (CCWeakTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)timeInterval
                                         target:(id)target
                                       selector:(SEL)selector
                                       userInfo:(id)userInfo
                                        repeats:(BOOL)repeats
                                  dispatchQueue:(dispatch_queue_t)dispatchQueue;

查看示例应用中的代码:sample app

安装

只需将此行添加到您的 Podfile

pod 'CCWeakTimer'
  • 手动

只需将文件 CCWeakTimer.hCCWeakTimer.m 添加到您的项目中。

截图

s

兼容性

  • 需要 ARC。如果您想在未启用 ARC 的项目中使用它,请在 CCWeakTimer.m 中标记链接器标志 -fobjc-arc
  • 支持 iOS iOS8+ 和 Mac OSX 10.8+。

许可

CCWeakTimer 可在 MIT 许可下使用。更多详情请参见 LICENSE 文件。