2012-01-29 9 views
7

私は、URLForUbiquityContainerIdentifier:がメインスレッドの外で呼び出されるべきかどうかについて多くの相反する情報を読んだことがあります。 Appleの多くのドキュメントでは、これらのメソッドはおそらくメインスレッド上で呼び出されます。しかし、私はまた、このメソッドを呼び出すことはかなりの時間をブロックする可能性があることを読んだことがあります。URLForUbiquityContainerIdentifierをメインスレッド外のスレッドで呼び出す必要がありますか?

みんなの考えは?メインスレッドで呼び出して、心配しないでください。そう、別のスレッドでこの呼び出しを行うのはいつですか?

答えて

6

NSFileManagerはブロックされている可能性があり、メインスレッドとは別のスレッドで実行することをお勧めします。

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

:ここではこれがここにあり素晴らしい記事からのもので、別のスレッド上の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]; 
    }); 
}); 

です

関連する問題