2012-01-29 4 views
7

Я прочитал много противоречивой информации о том, следует ли вызывать URLForUbiquityContainerIdentifier: вне основного потока или нет. Во многих документах Apple они всегда называют этот метод предположительно на основном потоке. Тем не менее, я также прочитал, что возможно, что вызов этого метода может блокироваться в течение значительного времени.Должен ли URLForUbiquityContainerIdentifier: вызываться в потоке вне основного потока?

Что представляют собой мысли каждого? Назовите его в основном потоке и не волнуйтесь или да, ВСЕГДА этот вызов вызывается в другом потоке?

ответ

6

NSFileManager может быть заблокирован и рекомендуется запускать на другой поток, чем основной поток. Вот фрагмент использования Grand Central Dispatch использовать 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/

Смежные вопросы