В Руководстве по наблюдению за ключевыми значениями раздел Регистрация для наблюдения за ключевыми значениями говорит: Обычно свойства в поставляемых Apple фреймворках являются только KVO-совместимыми, если они документируются как таковые ". Но я не нашел никаких свойств в документации, которые задокументированы как KVO-совместимые. Не могли бы вы указать мне некоторые?
В частности, я хотел бы знать, соответствует ли @property(nonatomic,retain) UIViewController *rootViewController
of UIWindow
KVO-совместимым. Причина в том, что я добавляю свойство rootViewController
к UIWindow
для iOS < 4 и хочу знать, должен ли я сделать это KVO-совместимым.
@interface UIWindow (Additions)
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0
@property (nonatomic, retain) UIViewController *rootViewController;
#endif;
@end
@implementation UIWindow (Additions)
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0
@dynamic rootViewController;
- (void)setRootViewController:(UIViewController *)newRootViewController {
if (newRootViewController != _rootViewController) {
// Remove old views before adding the new one.
for (UIView *subview in [self subviews]) {
[subview removeFromSuperview];
}
[_rootViewController release];
_rootViewController = newRootViewController;
[_rootViewController retain];
[self addSubview:_rootViewController.view];
}
}
#endif
@end