[英]NSDateFormatter inside dispatch_async
我對如何在dispatch_async中使用NSDateFormatter感到有些困惑。 我讀過它不是線程安全的,但這是否意味着我每次在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"]];
}
...
});
如果是串行隊列,則不必擔心線程安全,因為這些任務永遠不會同時運行。
如果要在並發線程上使用不是線程安全的類實例,則應為將要使用它的那個實例專門創建一個串行隊列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.