Насколько надежно КВО с UIKit - PullRequest
11 голосов
/ 24 мая 2011

Важно: не все классы KVO-совместимый для всех свойств. Вы можете убедиться, что ваши собственные классы KVO-совместимый, следуя инструкциям описано в «KVO Compliance». Типичные свойства в Apple поставляются рамки являются только KVO-совместимыми, если они задокументированы как таковые.

Это утверждение оставляет меня в замешательстве. Разве мы не можем использовать KVO для объектов UIKit вообще? Я не помню, чтобы какая-либо собственность была задокументирована как соответствующая KVO. Несмотря на то, что я говорю иначе, я могу использовать КВО со многими свойствами. Значит ли это, что я не могу на это положиться?

Любое понимание этого будет оценено.

1 Ответ

9 голосов
/ 24 мая 2011

UIKit в основном НЕ соответствует KVO.Это в основном потому, что UIView действует как высокоуровневая оболочка для CALayer, например, когда вы, например.измените frame свойство UIView, это изменит слои frame, но оставьте, например,.свойство bounds для UIView не затронуто, поэтому ни один наблюдатель не будет запущен для пути view.bounds, потому что он никогда не изменится.И это приводит к несоответствию KVO.

Только если свойство помечено как KVO-совместимое, вы можете положиться на это, иначе оно не будет работать или сломаться в некоторых странных случаях.

...