KVO与UIKit的可靠性如何

重要提示:并非所有的课程都符合KVO标准。 您可以按照“KVO合规性”中所述的步骤确保您自己的课程符合KVO标准。通常,苹果提供的框架中的属性仅在符合KVO标准时才具有KVO合规性。

这句话让我感到困惑。 我们不能使用KVO作为UIKit对象吗? 我不记得有任何财产被logging为符合KVO。 尽pipe如此,我可以使用KVO许多属性。 这是否意味着我不能依靠它?

任何深入了解,将不胜感激。

UIKit大多不符合KVO标准。 这主要是因为UIView作为CALayer的高级包装,所以当你例如。 改变UIViewframe属性,它会改变图层frame但离开例如。 UIViewbounds属性保持不变,所以view.boundspath不会触发观察者,因为它永远不会改变。 这导致非KVO合规性。

只有当这个属性被标记为符合KVO标准时才可以依靠它,否则在某些奇怪的情况下它将不能工作或者中断。