码迷,mamicode.com
首页 > 其他好文 > 详细

Concurrency with Core Data 案例学习

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

标签:control   objects   案例分析   服务器   多线程   

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 案例学习

标签:control   objects   案例分析   服务器   多线程   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!