With the majority of our UI features taken care of already, it's time to discuss how to create Core Data objects in a multithreaded application. In order to maintain the responsiveness of a high quality app, you'll need to perform heavy work on background threads that don't block/hang the UI. In today's lesson, we take a look at how a background thread can be run through GCD (Grand Central Dispatch) to perform a long running task.
In the second portion of the lesson, we inspect what happens when you try to use an NSManagedObjectContext that belongs to the main queue on a background thread. Finally, let's go through the code of performing creation of Company objects with performBackgroundTask on NSPersistentContainer.