原创blog,转载请注明出处
blog.csdn.net/hello_hwc
欢迎关注我的iOS SDK详解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html
前言,faulting 和 uniquing是理解CoreData的两个比较关键的概念,这里详细的讲解一下。
先简单看看二者的概念
- faulting 是一种CoreData降低内存使用的机制,是惰性加载的一种。
- Uniquing是辅助faulting的机制,它保证了在一个managed object context中只有一个managed object来表达一条记录
faulting 限制对象图的大小
一个fault在内存里就是一个对象的占位符,这个占位符代表的对象并没有完全取到内存里。分为两种:
- 一个managed object的fault就是相关类的对象,但是对象的持久化存储的属性没有被初始化
- 一个relationship 的fault表示对应的集合的实例。
这样的占位符的方式降低了内存使用,也不需要把fault对象相关的对象再取到内存里。
例如,取出如图的一个employee,那么员工的manager,department,reports默认都是fault来表示的