NSFileManager是线程安全的吗?

13

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

这段代码是否正确?

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(q, ^{

    NSFileManager *fm = [NSFileManager defaultManager];

});
3个回答

32

来自NSFileManager 类参考文档

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


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

6
直接从NSFileManager文档中得知:

线程注意事项

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


3
好的,我会尽力为您进行翻译。以下是需要翻译的内容:"lol, within less than 2 minutes, three almost exactly same answers" “lol,不到2分钟,三个几乎完全相同的答案。” - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接