Using UIManagedDocument creates a managedObjectContext (as with OS X v10.7 and iOS 5), using the default Confinement standard NSConfinementConcurrencyType . Simply put, this type of concurrency indicates that the context will not be used in any other thread than the one that originally created the context.
In this case, a UIManagedDocument (and its context) were created in the main thread, the performBlock: will execute the linked block back to the main thread. Using performBlock: you really don't need to know in which thread the managed Object ObjectContext is created, messaging performBlock: will always execute the block associated with it in the same thread in which the context is located.
source share