Currently I\'m setting my NSManagedContext\'s by doing the following in ViewDidLoad:
.h
@property (nonatomic,strong) NSManagedObject
When the Core Data stack is set up, MagicalRecord creates a default context of the "main queue concurrency type". If all your view controllers use this default context, you can
[NSManagedObjectContext MR_defaultContext]
in each view controller to get the
default context,and you could also, as you currently do
[NSManagedObjectContext MR_contextForCurrentThread]
in viewDidLoad
to get the default context.But the last method works only because viewDidLoad
is always called on the main thread and
MR_contextForCurrentThread
returns the default context in that case.
However, MR_contextForCurrentThread
creates additional contexts (of the private queue concurrency type) if called from a non-main
thread, and associates the context with a fixed NSThread
. But, as @casademora correctly said, such a private queue context does not always use the same thread for each
operation. So MR_contextForCurrentThread
should not be used on a non-main thread,
and it is identical to MR_defaultContext
if called from the main thread.
Therefore, even if it works in your case, you should avoid method (3). Whether you choose method (1) or (2) is purely a matter of taste.
If you need an additional context, e.g. for background import operations, you can call
e.g. MR_context
or MR_contextWithStoreCoordinator
and pass that context to whereever
it is needed.