KVO与UIKit的可靠性如何

Dee*_*olu 11 key-value-observing uikit ios

重要提示:并非所有属性都符合KVO标准.您可以按照"KVO合规性"中描述的步骤确保您自己的类符合KVO.通常,Apple提供的框架中的属性仅在符合KVO标准的情况下才会被记录.

这句话让我很困惑.我们不能将KVO用于UIKit对象吗?我不记得有任何财产被记录为符合KVO标准.尽管如此,我仍然能够使用具有许多属性的KVO.这是否意味着我不能依赖它?

任何洞察这一点将不胜感激.

Jus*_*Sid 9

UIKit大多不符合KVO标准.这主要是因为UIView作为高级包装器CALayer,所以当你例如.改变一个frame属性UIView,它将改变层,frame但留下例如.未触动的bounds属性UIView,因此没有观察者将被触发view.bounds路径,因为它永远不会真正改变.这导致非KVO合规性.

只有当属性被标记为KVO兼容时才能依赖于此,否则在某些奇怪的情况下它将无法工作或中断.