2012-01-29 50 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/

相关问题