13

是否可以通过 defaultManager 获取 NSFileManager 的实例并在主队列之外使用它?

这段代码可以吗?

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(q, ^{

    NSFileManager *fm = [NSFileManager defaultManager];

});
4

3 回答 3

31

来自NSFileManager 类参考

共享的 NSFileManager 对象的方法可以安全地从多个线程中调用。但是,如果您使用委托来接收有关移动、复制、删除和链接操作状态的通知,您应该创建文件管理器对象的唯一实例,将您的委托分配给该对象,并使用该文件管理器来启动你的操作。

于 2013-03-22T13:59:54.267 回答
9

文档中:

共享的 NSFileManager 对象的方法可以安全地从多个线程中调用。但是,如果您使用委托来接收有关移动、复制、删除和链接操作状态的通知,您应该创建文件管理器对象的唯一实例,将您的委托分配给该对象,并使用该文件管理器来启动你的操作。

于 2013-03-22T13:59:47.707 回答
6

直接来自NSFileManager文档

线程注意事项

共享的 NSFileManager 对象的方法可以安全地从多个线程中调用。但是,如果您使用委托来接收有关移动、复制、删除和链接操作状态的通知,您应该创建文件管理器对象的唯一实例,将您的委托分配给该对象,并使用该文件管理器来启动你的操作。

于 2013-03-22T14:00:50.637 回答