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
NSObject
que 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 subclaseNSView
oNSObject
no debe llamar a[super awakeFromNib]
.