有人可以为我解释“错误”的含义吗?
以下是Apple的Core Data Performance Doc中的“Faulting Behavior”文档。
错误行为
点火故障可能是一个相对昂贵的过程(可能需要往返持久存储的往返),您可能希望避免不必要地触发故障。您可以安全地在故障上调用以下方法而不会触发它:isEqual:,hash,superclass,class,self,zone,isProxy,isKindOfClass:,isMemberOfClass:,conformsToProtocol:,respondsToSelector:,description,managedObjectContext,entity,objectID ,isInserted,isUpdated,isDeleted和isFault。
由于isEqual和hash不会导致触发错误,因此通常可以将托管对象放置在集合中而不会触发错误。但是请注意,在集合对象上调用键值编码方法可能会导致在托管对象上调用valueForKey :,这会触发故障。此外,虽然描述的默认实现不会导致触发错误,但如果实现访问对象的持久属性的自定义描述方法,则会导致触发错误。
请注意,仅仅因为托管对象是一个错误,它并不一定意味着该对象的数据不在内存中 - 请参阅isFault的定义。
谢谢!
答案 0 :(得分:2)
一般而言,fault
是对某些数据的引用但该数据实际上不在内存中的情况的描述(因此它不是立即可用的,需要获取来自其他地方)。
因此,您有一个托管对象实例,但您只能在其上调用几个方法,而不会导致其他数据被收集并加载到内存中。