DirectoryWatchdog是一个简单的外部工具,用于监视本地文件夹中的更改。最常见的情况是与iTunes文件共享支持结合,以监视应用程序的文档目录。此代码使用了BSD kqueue API,应在OSX以及iOS上都能运行。
我在代码中使用了块(blocks)作为回调,因此它需要iOS 4或更高版本(或OSX 10.6或更新)。如果你需要支持更老版本的系统,你可能会将其重写为代理模式。
只需将SGDirWatchdog.h和SGDirWatchdog.m文件复制到你的项目文件夹中,并将它们添加到XCode项目中。然后你可以像在SGViewController.m中那样使用这个类。
#import "SGDirWatchdog.h" // TableviewController code ... - (void)viewDidLoad { [super viewDidLoad]; observer = [[SGDirWatchdog alloc]initWithPath:[SGViewController documentsPath] update:^{ self.files = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:documentsPath error:NULL]; [self.tableView reloadData]; }]; [observer start]; } - (void)viewDidUnload { [super viewDidUnload]; [observer stop]; } // ...
代码基于Michael Heyeck的博客文章: http://www.mlsite.net/blog/?p=2312
版权(c)2011 Simon Grätzer
许可协议:Apache License, Version 2.0(以下简称“许可证”);除非适用法律要求或在书面同意下,否则不得使用此文件,除非符合本许可证。您可以在以下位置获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据本许可证分发的软件按“原样”基础提供,不提供任何明示或暗示的保证或条件。有关许可协议的详细语言、权限和限制,请参阅许可证。