2012-01-29 12 views
7

Przeczytałem wiele sprzecznych informacji na temat tego, czy URLForUbiquityContainerIdentifier: należy wywołać poza głównym wątkiem, czy nie. W wielu dokumentach Apple zawsze nazywają tę metodę prawdopodobnie w głównym wątku. Jednak przeczytałem również, że możliwe jest, że wywoływanie tej metody może blokować przez dłuższy czas.Czy URLForUbiquityContainerIdentifier: należy wywoływać w wątku poza głównym wątkiem?

Jakie są myśli wszystkich? Nazwij to w głównym wątku i nie martw się, czy tak, ZAWSZE wywołaj to połączenie w innym wątku?

Odpowiedz

6

NSFileManager może być blokowany i zaleca się go uruchamiać na innym wątku niż główny wątek. Oto urywek z użyciem Grand Central Dispatch wykorzystać iCloud Storage na innym wątku

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]; 
    }); 
}); 

to z wielkim artykule znaleźć tutaj:

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

Powiązane problemy