Qual'è la differenza tra viewDidLoade viewDidAppear? Che tipo di inizializzazione o codice personalizzato entra in queste funzioni?
ad es. presentModalViewControllerfunziona solo quando è presente in viewDidAppeare non acceso viewDidLoad.
Qual'è la differenza tra viewDidLoade viewDidAppear? Che tipo di inizializzazione o codice personalizzato entra in queste funzioni?
ad es. presentModalViewControllerfunziona solo quando è presente in viewDidAppeare non acceso viewDidLoad.
Risposte:
viewDidLoadviene chiamato esattamente una volta, quando il controller di visualizzazione viene caricato per la prima volta in memoria. È qui che si desidera creare un'istanza di qualsiasi variabile di istanza e creare visualizzazioni che vivano per l'intero ciclo di vita di questo controller di visualizzazione. Tuttavia, la vista di solito non è ancora visibile a questo punto.
viewDidAppearviene chiamato quando la vista è effettivamente visibile e può essere richiamato più volte durante il ciclo di vita di un controller di visualizzazione (ad esempio, quando un controller di visualizzazione modale viene chiuso e la visualizzazione diventa nuovamente visibile). È qui che si desidera eseguire qualsiasi azione di layout o qualsiasi disegno nell'interfaccia utente, ad esempio presentando un controller di visualizzazione modale. Tuttavia, qualsiasi cosa tu faccia qui dovrebbe essere ripetibile. È meglio non conservare le cose qui, altrimenti avrai perdite di memoria se non le rilasci quando la vista scompare.
Vedi: https://developer.apple.com/documentation/uikit/uiviewcontroller
viewDidLoadè generalmente chiamato solo una volta e solo una volta, c'è una situazione in cui può essere chiamato di nuovo. In particolare, se mai ricevi un didReceiveMemoryWarning, le tue visualizzazioni non visibili potrebbero essere rilasciate (sebbene i controller delle visualizzazioni non siano toccate) e quando torni indietro, viewDidLoadpotrebbero essere richiamate per loro.
didReceiveMemoryWarning. Ma sono d'accordo che se usi buone pratiche quando scrivi il tuo viewDidLoad, dovresti stare bene. Il mio unico punto è che l'uso sciatto di ivars e la gestione manuale della memoria possono sicuramente causare perdite viewDidLoad. Le persone dovrebbero essere sensibili allo didReceiveMemoryWarningscenario e programmare di conseguenza.
viewDidLoadcodice che trapelerà didReceiveMemoryWarning. Sospiro.
In poche parole, si desidera creare controlli o array in viewDidLoad, dove come in viewDidAppearè dove si desidera aggiornare quei controlli o array.
viewDidLoadviene chiamato una volta quando viene creato il controller e viewDidAppearviene chiamato ogni volta che appare la vista, beh, DID. Quindi supponi di avere una visualizzazione modale che presenti, quando quella vista viene ignorata, viewDidAppearverrà chiamata e viewDidLoadnon verrà chiamata.
viewDidLoadpuò essere chiamato più di una volta . Se la visualizzazione mentre non è visualizzata (sotto una pila di altre visualizzazioni) viene scaricata da versioni precedenti di iOS in una situazione di memoria insufficiente, il controller della visualizzazione ricaricherà automaticamente la visualizzazione quando sarà necessario visualizzarla nuovamente sullo schermo. Nelle versioni successive di iOS puoi scegliere di ridurre l'utilizzo della memoria facendo ciò che prima iOS faceva per te: Scarica le visualizzazioni fuori schermo quando didReceiveMemoryWarningarriva il messaggio, nel qual caso viewDidLoadverrà richiamato di nuovo.