UIKit is mostly NOT KVO compliant. This is mostly because UIView
acts as high-level wrapper for CALayer
, so when you eg. change the frame
property of an UIView
, it will change the layers frame
but leave eg. the bounds
property of the UIView
untouched, so no observer will be triggered for the view.bounds
path, because it never really changes. And this leads to non KVO compliance.
Only if the property is marked as KVO compliant can you rely on this, otherwise it will not work or break in some weird cases.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…