1

谁能为我解释一下“故障”的含义?

这是 Apple 的 Core Data Performance Doc 的“故障行为”文档。

错误行为

触发故障可能是一个相对昂贵的过程(可能需要往返于持久存储),您可能希望避免不必要地触发故障。您可以安全地在故障上调用以下方法而不会触发它:isEqual:, hash, superclass, class, self, zone, isProxy,isKindOfClass:, isMemberOfClass:, conformsToProtocol:, respondsToSelector:, description, managedObjectContext, entity, objectID 、isInserted、isUpdated、isDeleted 和 isFault。

由于 isEqual 和 hash 不会导致触发故障,因此托管对象通常可以放置在集合中而不会触发故障。但是请注意,在集合对象上调用键值编码方法可能会反过来导致在托管对象上调用 valueForKey:,这会引发错误。此外,虽然 description 的默认实现不会导致错误触发,但如果您实现访问对象持久属性的自定义描述方法,这将导致错误触发。

请注意,仅仅因为托管对象是错误的,并不一定意味着该对象的数据不在内存中——参见 isFault 的定义。

谢谢!!

4

1 回答 1

2

一般而言,afault是对您引用某些数据但该数据实际上不在内存中的情况的描述(因此它不是立即可用的,需要从其他地方获取)。

因此,您有一个托管对象实例,但您只能在其上调用几个方法,而不会收集额外的数据并将其加载到内存中。

于 2013-07-02T15:45:03.597 回答