Should URLForUbiquityContainerIdentifier: be called in a thread outside the main thread?

I’ve read a lot of conflicting information about whether or not URLForUbiquityContainerIdentifier: should be called outside the main thread or not. In a lot of Apple’s documentation they always call this method presumably on the main thread. However, I’ve also read that it’s possible that calling this method could block for a significant time.

What is everyone’s thoughts? Call it in the main thread and don’t worry or yes, ALWAYS make this call in another thread?

  • iOS WiFi notification API
  • Today Widget Not Launching On Device(works on Simulator)
  • Cannot verify client 3000
  • Set annotation's title as current address
  • Turn a page like a Book with UIView?
  • How to use size class to make app compatible to iphone 5, iphone 6, iphone 6 plus
  • Solutions Collect From Internet About “Should URLForUbiquityContainerIdentifier: be called in a thread outside the main thread?”

    NSFileManager can be blocking and is recommended to run on a different thread than the main thread. Here is a snippet of using Grand Central Dispatch to utilize iCloud Storage on a different thread

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

    This is from a great article located here: