当托管对象变成故障时,如何正确处理KVO通知?

don*_*ile 4 iphone core-data

来自文档:

当Core Data将对象转换为故障时,将为对象的属性发送键值观​​察(KVO)更改通知(请参阅键值观察编程指南).如果您正在观察变为故障的对象的属性并且随后实现了故障,则会收到其值实际上未更改的属性的更改通知.

因此,如果一个对象变成了一个错误,Core Data会发送更改属性的KVO通知吗?所以我必须经常检查isFault == NO才能对通知感到高兴吗?

an0*_*an0 7

isFault不可靠,因为isFault在发送KVO通知时仍可能返回NO.人们应该检查faultingState一下:

faultingState返回一个值,指示接收器的故障状态.

  • (NSUInteger)faultingState返回值如果对象完全初始化为托管对象且未转换到其他状态或从其他状态转换,则返回0,否则返回其他值.

讨论该方法允许您在接收键值观察更改通知时确定对象是否处于过渡阶段.


Mar*_*rra 5

这是一个解决方案.更好的解决方案是在物体变成故障时停止观察物体.在实践中,除了在低内存情况下,您知道何时将某个对象转变为故障并且可以为其进行规划.