2012-01-29 3 views
7

URLForUbiquityContainerIdentifier:이 주 스레드 외부에서 호출되어야하는지 여부에 대한 많은 상충되는 정보를 읽었습니다. Apple의 많은 문서에서 그들은 항상이 방법을 주 스레드에서 호출합니다. 그러나이 메서드를 호출하면 상당한 시간 동안 차단 될 수도 있음을 읽었습니다.URLForUbiquityContainerIdentifier : 메인 스레드 외부의 스레드에서 호출해야합니까?

모든 사람의 생각은 무엇입니까? 메인 스레드에서 호출하고 걱정하지 않거나 예, 항상 다른 스레드에서이 호출을합니까?

답변

6

NSFileManager가 차단 될 수 있으며 주 스레드와 다른 스레드에서 실행하는 것이 좋습니다.

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

: 여기에 다른 스레드

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

이 여기에 좋은 기사 출신에 아이 클라우드 스토리지를 활용하는 그랜드 센트럴 파견을 사용하는 조각이다

관련 문제