En el Key-Value Observing Programming Guide, la sección Registering for Key-Value Observing dice "Normalmente, las propiedades en los marcos suministrados por Apple solo son compatibles con KVO si están documentadas como tales". Pero, no he encontrado ninguna propiedad en la documentación que esté documentada como compatible con KVO. ¿Podrías dirigirme a algunos?iOS: ¿Cómo puedo saber si una propiedad cumple con KVO?
Específicamente, me gustaría saber si el @property(nonatomic,retain) UIViewController *rootViewController
de UIWindow
es compatible con KVO. La razón es que estoy agregando la propiedad rootViewController
al UIWindow
para iOS < 4 y quiero saber si debo hacerlo compatible con 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
Genial, gracias! Entonces, como una pregunta de seguimiento, ¿el código se ve correcto y bueno? Esta es la primera vez que agrego un ivar a través de una categoría. – ma11hew28
@MattDiPasquale edited answer :) –
Hmm ... Sí, no pude compilarlo para el dispositivo iPhone 4.3.1. Tengo 'símbolos no definidos para la arquitectura ARMv6: "_OBJC_IVAR _ $ _ UIWindow._rootViewController", se hace referencia a partir de: - [UIWindow (adiciones) setRootViewController:] en UIWindow + Additions.o ld: Símbolo (s) no encontrado para la arquitectura ARMv6 collect2: ld devolvió 1 estado de salida'. Por lo tanto, voy a subclasificar para iOS 3.2, supongo. Un poco más de código, ¡pero debería hacerlo! ¡Gracias! – ma11hew28