0

NSDateFormatter を dispatch_async 内で使用する方法について少し混乱しています。スレッドセーフではないことを読みましたが、dispatch_async 内で使用するたびに新しいインスタンスを作成する必要があるということですか、それとも以下のコードが示すように静的として使用できますか? シリアルキューなので、同時に複数の場所からアクセスできないのでしょうか?

dispatch_async(video_sync_request_operation_processing_queue(), ^{

    static NSDateFormatter *dateFormatter = nil;
    if (!dateFormatter) {
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
        [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
    }

    ...

});
4

1 に答える 1

1
  1. シリアル キューの場合、これらのタスクが同時に動作することはないため、スレッド セーフについて心配する必要はありません。

  2. 並行スレッドでスレッド セーフではないクラス インスタンスを使用する場合は、使用するインスタンス専用のシリアル キューを作成する必要があります。

于 2012-08-24T10:16:34.977 に答える