【问题标题】:Is NSFileManager thread safe?NSFileManager 线程安全吗?
【发布时间】:2013-03-12 09:58:52
【问题描述】:

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

这段代码可以吗?

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(q, ^{

    NSFileManager *fm = [NSFileManager defaultManager];

});

【问题讨论】:

    标签: objective-c cocoa-touch concurrency grand-central-dispatch nsfilemanager


    【解决方案1】:

    来自NSFileManager Class Reference

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

    【讨论】:

      【解决方案2】:

      来自documentation

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

      【讨论】:

        【解决方案3】:

        直接来自NSFileManager documentation

        线程注意事项

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

        【讨论】:

        • 大声笑,不到 2 分钟,三个几乎完全相同的答案
        猜你喜欢
        • 1970-01-01
        • 2020-04-15
        • 2011-07-04
        • 2014-04-26
        • 2012-11-30
        • 2010-12-30
        • 2021-08-03
        • 2010-12-27
        • 2018-06-04
        相关资源
        最近更新 更多