首页 > 其他 > 详细

Concurrency with Core Data 案例学习

时间:2014-12-23 17:43:14      阅读:336      评论:0      收藏:0      [点我收藏+]

ThreadedCoreData 案例分析


该案例展示了Core Data在多线程中是如何使用的。这里使用了Thread Confinement模式。有两个线程,分别为主线程和后台线程,两个线程中各有自己的NSManagedObjectContext。并且这两个context共享一个persistentStoreCoordinator


首先,利用NSURLConnection异步从服务器获取数据信息,数据获取成功之后,建立一个NSOperation,在后台线程中解析获取的数据,生成NSManagedObject对象,然后将objects插入到后台线程中的context中,然后save 该context。以上这些操作都是在后台线程中执行的。


当后台context save之后,会发送通知,主线程中注册了该通知,就会获取该事件。在主线程中得到该通知,将变化合并到主线程的context中。然后刷新UI。


这里需要注意的一点是,当通知发生的时候,回调方法的执行是在后台线程中的,因此需要保证线程安全,将control dispatch 到主线程中,然后再执行和并操作。


通过这种方式可以做到耗时的Core Data 操作在后台线程中执行,而UI线程也不会被阻塞。


在Core Data中使用主线程有很多中原因,但很主要的原因就是为了主线程不会被阻塞。但是这么做带来的麻烦就是,由于Core Data是非线程安全的,会带来的线程安全问题,使程序的复杂性会提高。





Concurrency with Core Data 案例学习

原文:http://1150596.blog.51cto.com/1140596/1593610

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!