deprecated - viewDidUnload ya no se llama en ios6
(3)
Acabo de instalar la nueva versión de Xcode / ios6. viewDidUnload ahora está depreciado.
En el doc de apple,
viewDidUnload [...] obsoleto en iOS 6.0. Las vistas ya no se purgan en condiciones de poca memoria, por lo que este método nunca se llama
Pero el número de aplicaciones está utilizando esta devolución de llamada para liberar sus propiedades, como:
- (void)viewDidUnload {
[super viewDidUnload];
self.recipientButton = nil;
self.connectButton = nil;
self.infoLabel = nil;
}
Esta fue la mejor práctica para lanzar sus IBOutlets.
Entonces, la primera pregunta:
¿Qué va a pasar con estas aplicaciones existentes en iOS 6? ¿Se escaparán?
y el segundo:
¿Cuál es la nueva forma recomendada de liberar una propiedad de IBOutlet? ¿En el método dealloc?
y segundo: ¿Cuál es la nueva forma recomendada de liberar una propiedad de IBOutlet? ¿En el método dealloc?
¿Cuál es la forma "antigua" recomendada? Siempre debe liberar las variables de instancia retenidas en dealloc
; Siempre ha sido así y sigue siéndolo.
Era solo que en viewDidUnload
(que solo se llama para poca memoria), también podría establecer sus propiedades en nil
.
Para la primera pregunta:
Su ViewController recibirá una devolución de llamada del método didReceiveMemoryWarning y puede anular la vista y otros componentes de este método
Para referencia Consulte la sesión de video de WWDC 2012 en EVOLUTION OF VIEW CONTROLLER, en caso de que no lo haya hecho (creo que están disponibles solo para desarrolladores registrados, pero no estoy seguro).
Responde a tu segundo.
[liberación de objeto]; en dealloc. No es necesario asignar nil a objeto antes de soltar.
Te recomiendo que uses propiedades débiles para los IBOutlets como
@property (weak) IBOutlet UILabel * labelText;
De esa manera no necesitas hacer nada en dealloc. En iOS 6, simplemente ViewDidUnload no llamará, iOS5 o anterior solo llamará cuando haya una advertencia de memoria.