Creo que esto es un error. Llamar al addChildViewController parece ejecutarse sin ninguna advertencia o error también.
me escribió lo siguiente viewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
MyChildView *aChildViewController = [[MyChildView alloc] initWithNibName:@"MyChildView" bundle:nil];
// Do any additional setup after loading the view, typically from a nib.
SEL mySelector = @selector(addChildViewController:);
if([UIViewController instancesRespondToSelector:mySelector] == YES) {
NSLog(@"YES addChildViewController:");
[self addChildViewController:aChildViewController];
} else {
NSLog(@"NO addChildViewController:");
}
if([UIViewController instancesRespondToSelector:@selector(automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers)] == YES) {
NSLog(@"YES automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers");
} else {
NSLog(@"NO automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers");
}
}
En el simulador de iOS 4.3 que veo siguiente salida. Ambos mensajes están restringidos a iOS 5.0 y superior. Parece que addChildViewController responde incorrectamente en el simulador 4.3. No tengo el dispositivo 4.3 para probar en un dispositivo real.
2011-11-18 09:55:12.161 testViewFunctionality[873:b303] YES addChildViewController:
2011-11-18 09:55:12.162 testViewFunctionality[873:b303] NO automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers
En el iOS 5.0 Simulator ambos responden cuál es el comportamiento correcto.
2011-11-18 09:59:31.250 testViewFunctionality[932:f803] YES addChildViewController:
2011-11-18 09:59:31.252 testViewFunctionality[932:f803] YES automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers
Estoy usando XCode 4.2 en Lion. Cuando miro a través de UIViewController.h en el marco del Simulador 4.3 no hay mención de addChildViewController: o automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers pero el único SDK incluido es 5.0.
supongo que si uno quería ser cauteloso que podría probar la versión de IOS que se ejecuta en el dispositivo que ejecuta. Ver How to check iOS version?
No estoy seguro de por qué sucede esto pero confirmé que veo lo mismo en XCode 4.2. También tuve en cuenta establecer mi destino de implementación en 4.0. Hacer la misma prueba para automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers, por ejemplo, devuelve NO. – Joel
¿muestra una advertencia al intentar ejecutarlo? Es posible que ese método se incluyera en 4.0, pero es privado, aunque los métodos privados tienen _por delante de ellos ... así que parece extraño – Daniel
Podría ser una API privada que Apple estaba usando y probando en iOS 4. Ahora que es producción listo, puede que acabe de ser lanzado al consumo público con iOS 5. No estoy seguro, solo escupe el balón aquí. –