ios - La mejor forma de configurar un NSViewController inicializado con initWithNibName: paquete:?
macos initialization (1)
Tengo una subclase de NSViewController que carga su vista desde una punta (con initWithNibName: bundle: y es el propietario del archivo de esa punta).
Necesito hacer una inicialización después de cargar el plumín y quiero que mi código sea el más compatible:
- En ios: existe el método viewDidLoad para hacer eso
- En osx: en Snow Leopard, no hay un método como viewDidLoad, pero se llama a awakeFromNib en el propietario del archivo también.
Entonces mis preguntas son:
- ¿Se llama también awakeFromNib al propietario del archivo del plumín en Lion?
- Si uso awakeFromNib, ¿necesito llamar a [super awakeFromNib]? (¿NSViewController implementa awakeFromNib?)
- Si la respuesta 1 es SÍ, ¿es esta una buena solución? :
- (void)initAfterNibLoaded { ... } - (void)viewDidLoad { // Code for ios [self initAfterNibLoaded]; } - (void)awakeFromNib { // Code for osx // Not sure if necessary [super awakeFromNib]; [self initAfterNibLoaded]; }
Si la respuesta 1 es NO, ¿es esta una buena solución? :
- (void)viewDidLoad {
// Initialize after nib loaded
}
#ifndef TARGET_OS_IPHONE
- (void)loadView {
// Call parent method
[super loadView];
// Simulate viewDidLoad method
[self viewDidLoad];
}
#endif
Gracias
Esto es lo que encontré:
Sí,
awakeFromNib: también se llama al propietario del archivo en Lion (y normalmente es el mismo para el nuevo Mountain Lion).A partir de OSX 10.6, hay una categoría en
NSObjectque agregaawakeFromNib, por lo que es seguro llamar a[super awakeFromNib]desde cualquier subclase. Para OSX anterior a 10.6, podemos usarinstancesRespondToSelector: para saber si la clase padre implementaawakeFromNib, la subclaseNSViewoNSObjectno debe llamar a[super awakeFromNib].