Threading is a complex problem in applications. Adding Core Data to the mix doesn't make it easier. However, if you follow some rules you can perform Core Data operations on Background queues without too much trouble.
Background Savingwith Core DataJosh Johnson[email protected]twitter.com/jnjoshSunday, December 4, 11
View Slide
Concurrency withCore DataJosh Johnson[email protected]twitter.com/jnjoshSunday, December 4, 11
“Why supportconcurrency?”Sunday, December 4, 11
http://skitch.com/okidokie/nm31y/beach-ball-mac-osxSunday, December 4, 11
Wait... Isn’t this toohard?Sunday, December 4, 11
Wait... Isn’t this toohard?http://www.wallchan.com/sandbox/57897/Sunday, December 4, 11
http://kelvinslush.com/blog/the-rulesSunday, December 4, 11
Thread ConfinementSunday, December 4, 11
NSManagedObjectContextNSManagedObjectRule 1.&Sunday, December 4, 11
NSManagedObjectContextNSManagedObjectRule 1.&Not Thread-safeSunday, December 4, 11
NSManagedObjectIdRule 2.Sunday, December 4, 11
NSManagedObjectIdRule 2.Is Thread-safeSunday, December 4, 11
NSManagedObjectIdRule 2.Is Thread-safe[otherMoc objectWithID:objectID]Sunday, December 4, 11
Merge Changes fromNotificationsRule 3.Sunday, December 4, 11
Merge Changes fromNotificationsRule 3.NSManagedObjectContextDidSaveNotificationSunday, December 4, 11
Merge Changes fromNotificationsRule 3.NSManagedObjectContextDidSaveNotification[moc mergeChangesFromContextDidSaveNotification:note];Sunday, December 4, 11
No ThreadConfinement?Sunday, December 4, 11
http://63angel.blogspot.com/2011/07/danger-will-robinson-obsessions.htmlSunday, December 4, 11
http://pennystockgurus.blogspot.com/2010_07_01_archive.htmlSunday, December 4, 11
“Siri, make my appbetter”Sunday, December 4, 11
http://skitch.com/okidokie/nm31y/beach-ball-mac-osxDemoNSOperationSunday, December 4, 11
GCD & BlocksSunday, December 4, 11
Grand Central Dispatch& BlocksConcurrent And Asynchronous Programming With GCDNathan ErorSaturday @ 2:45pmSunday, December 4, 11
“The irresponsibly quickreview”Grand Central Dispatch& BlocksSunday, December 4, 11
Blockshttp://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.htmlSunday, December 4, 11
GCDdispatch_async(dispatch_get_main_queue(), ^{[self doSomethingImportantOnMainQueue];});dispatch_async(myQueue, ^{[self doSomethingImportant];});Sunday, December 4, 11
http://skitch.com/okidokie/nm31y/beach-ball-mac-osxDemoGCD & BlocksSunday, December 4, 11
Sunday, December 4, 11
Core Data Concurrency in iOS 5Sunday, December 4, 11
Core Data Concurrency in iOS 5• Concurrency TypesSunday, December 4, 11
Core Data Concurrency in iOS 5• Concurrency Types• NSConfinementConcurrencyType• NSMainQueueConcurrencyType• NSPrivateQueueConcurrencyTypeSunday, December 4, 11
Core Data Concurrency in iOS 5• Concurrency Types• NSConfinementConcurrencyType• NSMainQueueConcurrencyType• NSPrivateQueueConcurrencyType• Parent / Child ContextsSunday, December 4, 11
http://skitch.com/okidokie/nm31y/beach-ball-mac-osxDemoParent / Child ContextsSunday, December 4, 11
ResourcesMAGICALRECORDhttps://github.com/magicalpanda/MagicalRecord http://developer.apple.comhttp://cimgf.comSunday, December 4, 11
Questions?Sunday, December 4, 11
Thank You!Josh Johnson[email protected]twitter.com/jnjoshSunday, December 4, 11