首页 > 代码库 > Concurrency with Core Data 案例学习
Concurrency with Core Data 案例学习
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 案例学习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。