Cosa devo fare quando la mia app riceve un avviso di memoria?Cosa fare quando la mia app riceve avvisi di memoria?
risposta
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.
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.
In didReceiveMemoryWarning
, è necessario rilasciare qualsiasi elemento memorizzato nella cache o non essenziale per evitare di esaurire completamente la memoria.
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.
- 1. Cosa attiva gli avvisi di "memoria insufficiente" di Blackberry?
- 2. Come implementare avvisi di errore di rete nella mia app?
- 3. Che cosa significa "var app = app || {};" fare?
- 4. Quanta memoria dovrebbe occupare la mia app per iPhone?
- 5. invia email utilizzando gmail smtp riceve gli avvisi
- 6. iOS AirPlay: la mia app riceve notifica di un display esterno solo quando il mirroring è attivo?
- 7. Il compilatore riceve avvisi quando si utilizza la funzione strptime (C)
- 8. errore di memoria insufficiente, errore della mia app?
- 9. Cosa posso fare su unicorn: errori di clientshutdown sulla mia app heroku rails?
- 10. Come posso mantenere la mia app inattiva?
- 11. Come testare se la tua app iOS si comporta bene con gli avvisi di memoria?
- 12. Cosa devo fare per adattare la mia app a iOS 5.0 mantenendo la compatibilità con iOS 4
- 13. L'app riceve avvisi di memoria e si blocca quando si carica il file HTML con molti video di YouTube in UIWebView
- 14. NSLog rallenterà la mia app?
- 15. Posso sapere quando l'utente cancella la mia app?
- 16. Cosa sta mangiando la mia memoria? (L'edizione di utilizzo di SAW, JS mem)
- 17. Il nuovo iPad: gli avvisi di scarsa memoria non appaiono?
- 18. Come aggiungere l'icona della mia app nella barra di stato quando la mia app è in esecuzione?
- 19. Cosa fare quando le "perdite di memoria" sono causate dal framework Foundation?
- 20. Perché utilizzare re.match(), quando re.search() può fare la stessa cosa?
- 21. Cosa fare quando la classe WxPerl non ha un metodo?
- 22. Swift SpriteKit fare body fisica da texture di un'immagine rallenta troppo la mia app
- 23. Cosa fare quando rubygems.org non funziona?
- 24. Cosa succede quando mongodb ha esaurito la memoria?
- 25. IObserver: cosa deve fare l'osservatore quando IObserver.OnError viene chiamato
- 26. Avvisi di memoria/arresto anomalo con l'app per iPad PhoneGap
- 27. App terminata a causa della pressione di memoria quando si utilizza la fotocamera in iOS 7
- 28. Posso interrompere Android dall'uccidere la mia app?
- 29. Cosa devo fare per impedire alla mia app Java di attivare il download legacy di Java 6 su OS X
- 30. Come devo testare la mia app Rails?
Grazie! ... l'ultimo paragrafo era l'indizio che stavo cercando. – Omer