2012-01-29 87 views
7

我讀過很多關於是否應該在主線程之外調用URLForUbiquityContainerIdentifier:的衝突信息。在很多Apple的文檔中,他們總是將這種方法稱爲主線程。不過,我也讀過,調用此方法可能會阻塞相當長的時間。應該在主線程之外的線程中調用URLForUbiquityContainerIdentifier:

大家的想法是什麼?在主線程中調用它,不要擔心或是,總是在另一個線程中進行此調用?

回答

6

NSFileManager可能被阻塞,建議在與主線程不同的線程上運行。下面是使用大中央調度利用的iCloud存儲在不同的線程

dispatch_queue_t globalQueue = dispatch_get_global_queue(QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(globalQueue, ^{ 
    NSFileManager *fileManager = [[NSFileManager alloc] init]; 
    NSURL *ubiquityContainer = [fileManager URLForUbiquityContainerIdentifier:nil]; 

    dispatch_queue_t mainQueue = dispatch_get_main_queue(); 
    dispatch_async(mainQueue, ^{ 
     [self updateWithUbiquityContainer:ubiquityContainer]; 
    }); 
}); 

這是設在這裏一個偉大的文章的摘錄:

http://oleb.net/blog/2011/11/ios5-tech-talk-michael-jurewitz-on-icloud-storage/

相關問題