CDEvents 1.2.2

CDEvents 1.2.2

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

Aron Cedercrantz 维护。



CDEvents 1.2.2

  • 作者
  • Aron Cedercrantz

注意: develop 分支 需要 Mac OS X 10.6 或更高版本,因为框架依赖于 ARC区块

网站: http://rastersize.github.com/CDEvents

这是什么?

这是一个 Objective-C 封装,用于支持 Mac OS X 的 FSEvents C API 并支持区块。此外,所有类都是不可变,并且应该是线程安全的。

要求

需要 Mac OS X 10.6 (Snow Leopard) 和 Intel 64 位 CPU。这些要求来自自从 10.6 开始支持自动引用计数 (ARC) 并使用现代(即 64 位)Objective-C 运行时,因为 ARC 需要不可变 ABI。尽管构建产品可以在 10.6 及更高版本上运行,但必须在运行 10.7(Lion)的机器上构建,并使用 Xcode 4.2 和 10.7 SDK,因为 10.6 SDK 不包括 ARC。构建的产品支持手动内存管理和自动引用计数。

如果您需要支持较旧的 OS X 版本或垃圾回收,请参阅分支 support/1.1。所有 1.1.x 版本将支持垃圾回收和 OS X 10.5。

用法

您可以使用基于区块的版本(推荐)或基于代理的版本。同时使用这两种系统不受支持。

基于区块(推荐)

  1. 将 CDEvents 添加到您的项目中,
    • 通过编译项目并将 CDEvents.framework 拖动到您的项目中,或者
    • 通过将整个 CDEvents 项目作为子项目拖动到您的项目中。
  2. 在需要的地方导入 CDEvents.h 头文件。
  3. 设置您的 CDEvents 实例,并为其提供一个在事件发生时执行的区块。

简单示例代码

self.events = [[CDEvents alloc] initWithURLs:<NSArray of URLs to watch>
                                       block:^(CDEvents *watcher, CDEvent *event) {
                                           <Your code here>
                                       }];

或者使用所有选项的初始化器

self.events = [[CDEvents alloc] initWithURLs:<NSArray of URLs to watch>
                                       block:^(CDEvents *watcher, CDEvent *event) {
                                           <Your code here>
                                       }
                                   onRunLoop:[NSRunLoop currentRunLoop]
                        sinceEventIdentifier:kCDEventsSinceEventNow
                        notificationLantency:CD_EVENTS_DEFAULT_NOTIFICATION_LATENCY
                     ignoreEventsFromSubDirs:CD_EVENTS_DEFAULT_IGNORE_EVENT_FROM_SUB_DIRS
                                 excludeURLs:<NSArray of URLs to exlude>
                         streamCreationFlags:kCDEventsDefaultEventStreamFlags];

请参阅测试应用程序(TestApp),了解如何使用此框架的示例。

基于代理

这与 ARC 和区块之前的操作相同。

  1. 将 CDEvents 添加到您的项目中,
    • 通过编译项目并将 CDEvents.framework 拖动到您的项目中,或者
    • 通过将整个 CDEvents 项目作为子项目拖动到您的项目中。
  2. 在需要的地方导入 CDEvents.h 头文件。
  3. CDEventsDelegate.h 头文件导入需要的地方(例如,在声明代理的文件中)。
  4. 实现该代理(-URLWatcher:eventOccurred:)并创建你的 CDEvents 实例。
  5. 当你不再需要代理时,将其初始化为 0。

示例代码

self.events = [[CDEvents alloc] initWithURLs:<NSArray of URLs to watch>
                                    delegate:<Your delegate>
                                   onRunLoop:[NSRunLoop currentRunLoop]
                        sinceEventIdentifier:kCDEventsSinceEventNow
                        notificationLantency:CD_EVENTS_DEFAULT_NOTIFICATION_LATENCY
                     ignoreEventsFromSubDirs:CD_EVENTS_DEFAULT_IGNORE_EVENT_FROM_SUB_DIRS
                                 excludeURLs:<NSArray of URLs to exlude>
                         streamCreationFlags:kCDEventsDefaultEventStreamFlags];

请参阅测试应用程序(TestApp),了解如何使用此框架的示例。

重要:由于将 Mac OS X 10.6 设置为部署目标,无法自动清空弱引用。因此,当你不再想接收事件时,必须将 CDEventsdelegate 设置为 nil。这意味着,至少在你的 -dealloc 方法中。这也适用于使用 10.7 及更高版本的情况!(delegate 是一个 unsafe_unretained 属性。)

有关更多详细信息,请参阅头文件中的文档以及下面的“API 文档”部分。

API 文档

阅读最新的 API 文档浏览 CDEvents 的各个版本。或者,你可以自己生成它,请见下文。

appledoc

从项目的根目录运行 api.appledoc.sh 脚本。脚本接受一个可选参数,即项目的版本字符串。如果版本字符串为空,则使用 “HEAD”。

Doxygen

您可以使用 Doxygen 来生成 API 文档。在 Doxygen 中打开文件 api.doxygen,点击“运行”选项卡,然后点击“运行 doxygen”按钮。完成后,您应该在项目的根目录下找到一个名为 api 的目录(git 忽略),其中包含一个名为 html 的子目录,您可以在其中找到 index.html。双击并享受。

贡献者

查看 GitHubs rastersize/CDEvents 的贡献者统计页面

许可

代码是在 MIT 许可证 下发布的。

如果你愿意,尽管你真的不需要,我很乐意了解你用 CDEvents 做什么!请给我发送电子邮件(first name (i.e. aron) @ last name (i.e. cedercrantz) dot se)。