KVC setNilValueForKey:建议调用方法而不使用属性访问器

KVC文档说

当您尝试将属性设置为nil时,将调用键值编码方法setNilValueForKey:方法。

到目前为止听起来不错

…使用setValue:forKey:设置新值。 这样可以保持模型的封装,并确保实际发生因设置值而发生的任何其他操作。 这被认为是比调用访问器方法或直接设置实例变量更好的做法。

为什么在原语或值类型属性上设置’default’值时调用-setValue:forKey:-setNilValueForKey:方法内更好? 是否有使用KVC方法的性能或技术优势-setValue:forKey:与属性访问器相对(我假设当它说accessor方法时它也适用于访问器属性,因为它们只是方法的合成糖)? 通常,当Apple推荐“最佳实践”时,需要对性能或可靠性进行支持。 有人知道有记录的原因吗?

从你的报价:

这样可以保持模型的封装,并确保实际发生因设置值而发生的任何其他操作。

调用setValue:forKey:代替访问器或更改ivar可确保维持所有正确的副作用。 当引用提到维护封装时,它意味着保留KVC方法而不是自定义访问器。 调用setValue:forKey:也意味着您可以让运行时决定如何为您设置属性。 最后,“附加行动”可能指的是键值观察。 它将确保调用正确的方法,而不是任何不应调用的方法。