and further in AppDelegate.m as
defaultContext = [NSManagedObjectContext MR_defaultContext];
... this is likely AOK, since you are likely on the main thread.
where it is used throughout the app.
... this is less OK, since "throughout the app" implies that are you possibly on not the main thread.
You probably want to use [NSManagedObjectContext MR_contextForCurrentThread]
in specific places.
Take a look at what [NSManagedObjectContext MR_defaultContext]
and [NSManagedObjectContext MR_contextForCurrentThread]
do in MagicalRecord (type that out in your code, and cmd-click on it for a fast way to find it). You'll see that MR_contextForCurrentThread
uses the defaultContext on the main thread, and creates a new context parented to the defaultContext on other threads.