【问题标题】:How to monitor file change on iOS platform?iOS平台如何监控文件变化?
【发布时间】:2014-03-16 16:08:36
【问题描述】:

我发现mac上有一些库可以监控文件的变化,例如:https://github.com/bdkjones/VDKQueue 但是我没有找到一个库来监控ios平台上的文件更改。

谁能告诉我如何监控 objc 包装器中的文件更改。

谢谢

【问题讨论】:

标签: ios file monitor kqueue


【解决方案1】:

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

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

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

我正在创建一个可移植的 Objective-C 类以简化该过程,但与此同时,您应该看看demo project I've put on GitHub。它显示了如何准确地执行我所描述的操作。

编辑:

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

pod 'iMonitorMyFiles', '~> 0.1.0'

【讨论】:

  • 是否可以在 iOS 11 及更高版本的文件应用中监视目录?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多