5

Una domanda su didReceiveMemoryWarning/viewDidUnload.Viene chiamato didReceiveMemoryWarning/viewDidUnload quando viene visualizzato un controller di visualizzazione?

Se la mia applicazione ha molte view controller, uno dei quali è mostrata, e gli altri indietro (a causa di uso un controller di navigazione o il controller barra delle schede, non importa), che vedono i controllori riceveranno didReceiveMemoryWarning/viewDidUnload, tutti loro, solo nascosti o solo mostrati?

E 'possibile che VC visualizzato visualizzi didReceiveMemoryWarning ma non viewDidUnload (perché, come mostrato, non ha alcun senso).

A proposito, ho queste domande dopo aver visto questo schema: UIViewController init/dealloc flow chart

Grazie mille per l'aiuto.

+0

Dal diagramma segue che viewDidUnload viene chiamato solo se si chiamaReceiveMemoryWarning ??? hmmm non è vero – Stas

+0

Questa è la ragione della mia domanda. Conosci un diagramma migliore? Grazie. – Ricardo

+1

Sembra che questo abbia la risposta: http://www.nextconceptdc.com/blog/wp-content/uploads/2011/08/UIViewControllerLifecycle.png – Ricardo

risposta

1

primo luogo, vi sono due metodi: didReceiveMemwarnings

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 

viene chiamato quando l'applicazione riceve un avviso di memoria dal sistema. e di UIViewController

- (void)didReceiveMemoryWarning 

Inviato al controller della vista quando l'applicazione riceve un avviso di memoria.

Secondo, in questi metodi viene chiamato il codice (beh, ovviamente), quindi in quei controller che non dispongono di supervisioni (cioè di quelli che non vengono visualizzati al momento) la vista viene cancellata e viewDidUnload viene inviato

0

Quando viene ricevuto un avviso di memoria, viene ricevuto a livello di applicazione, tutto il viewControllers e l'appdelegate lo ricevono.

Non è necessario che viewDidUnload venga chiamato per qualsiasi o tutti i controller. Dipende strettamente da quanto il sistema operativo critico pensa che sia l'avviso di memoria. Come la prima volta, la tua app riceve un avviso Level 1, quindi Level 2 e molto probabilmente alla terza ora (in un intervallo breve) il sistema operativo interromperà l'applicazione ritenendo che sia passato allo stato instabile.