MSWeakTimer 1.1.0

MSWeakTimer 1.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Nacho SotoJavier Soto维护。



  • 作者
  • Javier Soto

描述

线程安全 NSTimer 替换,不保留目标,并支持与 GCD 队列一起使用。

动机

此类的第一个动机是想有一种类型的计时器,对象可以 拥有 并且保留它,而不会造成循环引用(NSTimer 造成的,因为它会保留其目标)。这样您就可以在拥有计时器的对象类的 -dealloc 方法中释放计时器。

使用 NSTimer 时遇到的其他问题是文档上的以下注意

特殊考虑事项

您必须从安装计时器的线程发送此消息。如果您从其他线程发送此消息,与计时器关联的输入源可能不会被从其运行循环中移除,这可能会阻止线程正确退出。

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

相关的 Stackoverflow 问题.

实现

MSWeakTimer 的实现已被 WWDC 2013 核心操作系统实验室的 libdispatch(《GCD》)工程师审查和验证。

如何使用

使用此类方法创建 MSWeakTimer 对象

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

查看在 示例应用程序 中的代码。

安装

只需将此行添加到您的 Podfile

pod 'MSWeakTimer', '~> 1.1.0'
  • 手动

将文件 MSWeakTimer.hMSWeakTimer.m 添加到您的项目中。

兼容性

  • 需要 ARC。如果您想在没有 ARC 的项目中使用它,请将 MSWeakTimer.m 标记为链接器标志 -fobjc-arc
  • 支持 iOS iOS5+ 和 Mac OSX 10.7+。

许可证

MSWeakTimer 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。