7

i find that there are some libraries to monitor file changes on mac,for example:https://github.com/bdkjones/VDKQueue but i failed to find a library to monitor file changes on ios platform.

could anybody tell me how to monitor file changes in objc wrapper.

thanks

4

2 回答 2

9

iOS 上的文件监控是通过为您想要监控的任何文件或文件夹创建 GCD 所谓的“调度源”来实现的。创建调度源时,您提供了三个有趣的东西:

  1. 指向文件或文件夹的文件描述符
  2. 用于描述您希望收到通知的事件类型的标志(文件已修改、文件已写入等)
  3. 发送这些事件通知的队列(主队列、后台队列等)

创建调度源后,您可以设置要在事件发生或源被取消(销毁)时执行的代码块。在您为事件发生时设置的块中,您可以确定发生了哪个事件(如果您注册了多个类型),并相应地执行 if...else...then 或 switch...case 语句。

我正在创建一个可移植的 Objective-C 类来简化这个过程,但与此同时,你应该看看我放在 GitHub 上的一个演示项目。它显示了如何准确地做我所描述的。

编辑:

iMonitorMyFiles现在可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中:

pod 'iMonitorMyFiles', '~> 0.1.0'
于 2014-03-27T20:24:59.933 回答
2

查看“dispatch_sources” - 这是一种基于 GCD 的监控方式,例如文件系统:https ://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html

根据链接的文档,我在 Mac OS 上使用它而不是 kqueue,它也应该在 iOS 上可用。

于 2014-02-17T11:34:26.047 回答