6

¿Es seguro asumir que un atributo, es decir fetchedResultsController, de chatViewController, una instancia de una subclase de UITableViewController, es siempre nil cuando viewDidLoad se llama, en el supuesto de que se configura en nil en viewDidUnload? ¡Uf!¿Cuándo se llama a viewDidLoad?

Si ese es el caso, entonces no veo la necesidad inmediata de redefinir la función de acceso como en la aplicación de ejemplo Xcode CoreDataBooks. Prefiero poner todo ese código en viewDidLoad en lugar de ponerlo en una función separada porque ese es el único lugar donde lo usaré.

Respuesta

3

viewDidLoad se invoca después de cargar la vista. Si o no, fetchedResultsController es nulo o no, depende de cómo se inicie viewController. Por ejemplo, cuando se crea el detailViewController, podría configurar su fetchedViewController antes viewDidLoad se llama:

RecipeDetailViewController *detailViewController = [[RecipeDetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    detailViewController.fetchedResultsController = fetchedResultsController; 

    [self.navigationController pushViewController:detailViewController animated:animated]; 
    [detailViewController release]; 

Dicho esto, a continuación, nil'ing fetchedResultsController en viewDidUnload aseguraría que es nula.

+0

Cool. Gracias. Creo que tu última oración allí respondió mi pregunta. ¡Es bueno saberlo! :) – ma11hew28

2

Debe suponer que viewDidLoad se puede llamar varias veces. Si se envía una advertencia de memoria, su controlador de vista descargará la vista de la memoria, y la próxima vez que se necesite se llamará a viewDidLoad.

+2

Para que quede claro, 'viewDidLoad' no se llamará varias veces consecutivamente. –

+2

Eso tiene sentido. Entonces, puedo suponer que si configuro 'fetchedResultsController' en' viewDidLoad' y 'nil' it en' viewDidUnload', entonces no lo ajustaré innecesariamente de nuevo en 'viewDidLoad'? En otras palabras, 'viewDidUnload' siempre se llama antes de otra llamada de' viewDidLoad', ¿correcto? – ma11hew28

3

viewDidLoad Llamado en estas Secnarion: -

1.Cuando que empuje el controlador de vista después de crear que es objeto por segue o por stoary Identificación del tablero.

2. Llamado a más de uno en el caso de crear instancia más tiempo en la aplicación y empujarlo una y otra vez. Por ejemplo: si implementa como coaursal (que requiere controlador adicional durante el desplazamiento) así es necesita para que pueda llamado varias veces viewDidLoad.

3.se llama cuando todas las instancias de memoria (uiviewcontroller y su instancia de subclase) significa que nuestra vista está lista para cargarse en la memoria con la dirección.

4.Recuerde que solo se ha creado el objeto del controlador de clase hijo. El objeto de clase principal nunca se ha instanciado durante Secnarion normal.

0

viewDidLoad se invoca solo cuando se crea una instancia de la vista por primera vez. Si no está recreando el controlador de vista cada vez en su aplicación, solo lo llamará una vez (y lo volverá a llamar si recibe una advertencia de memoria, y la vista no se ve).

Cuestiones relacionadas