2010-10-26 12 views

risposta

8

Dipende tutto dalla tua app, di solito non devi fare nulla di speciale se non seguendo le pratiche consigliate da Apple.

ViewControllers che non sono visibili al momento riceveranno il messaggio didReceiveMemoryWarning. Per impostazione predefinita (chiamando [super didReceiveMemoryWarning]) la vista del controller viene scaricata (rilasciata, liberata). Mentre la vista si sta scaricando, il controller di visualizzazione riceve viewDidUnload in cui è necessario rilasciare tutti gli IBOutlet (o elementi dell'interfaccia utente conservati in altro modo). Solo allora la vista può essere completamente deallocata e la memoria liberata.

Nella didReceiveMemoryWarning si dovrebbe anche gratis quanti più dati possibile - se si memorizza una parte del modello di dati in ViewController, rilasciarlo, e ricostruire in viewDidLoad che sarebbe chiamato quando la visualizzazione viene caricato di nuovo (quando l'utente naviga torna a questo controller). Puoi anche informare le tue classi modello sulla memoria libera.

+0

Grazie! ... l'ultimo paragrafo era l'indizio che stavo cercando. – Omer

-1

Se si registra o si scrive in un altro file, potrebbe esserci un problema con lo spazio "disco".

Inoltre, è necessario verificare la presenza di perdite di memoria.

0

In didReceiveMemoryWarning, è necessario rilasciare qualsiasi elemento memorizzato nella cache o non essenziale per evitare di esaurire completamente la memoria.

1

Dipende molto dalla tua app.

Se l'app scarica e memorizza nella cache molti contenuti di Internet, ad esempio, è necessario eliminare il più possibile quando si riceve un avviso.

Se la tua app è un gioco OpenGL, potresti avere una trama/audio/gestore dati che fa riferimento a dati inutilizzati, che poi desideri liberare. Cocos2D gestisce questo tipo di cose.

Se la tua app non richiede molta memoria, hai una perdita di memoria da qualche parte, e dovresti 1) leggere la Guida alla programmazione della gestione della memoria di Apple 2) usa Strumenti/Perdite.

Problemi correlati