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 に答える