Sommario:
- Il metodo didReceiveMemoryWarning
- L'applicazioneDidReceive MemoryWarning: metodo
- UIApplicationDidReceiveMemory WarningNotification: notification
- Scegliere la giusta strategia di gestione della memoria per la tua applicazione
Video: MEMORIA PIENA ANDROID? Ecco come RISOLVERE DEFINITIVAMENTE! • Ridble 2025
Anche se hai fatto tutto correttamente, in una grande app iOS, potresti semplicemente esaurire la memoria. Quando si verifica questa situazione, il sistema invia una notifica di memoria insufficiente alla tua app, ed è qualcosa a cui devi prestare attenzione. Se non lo fai, è una ricetta affidabile per il disastro. UIKit offre diversi modi per configurare la tua app in modo da ricevere notifiche tempestive con poca memoria:
-
Sostituisci i metodi didReceiveMemoryWarning nella sottoclasse UIViwComtroller personalizzata.
-
Implementa applicationDidReceiveMemoryWarning: metodo del delegato dell'applicazione.
-
Registrati per ricevere UIApplicationDidReceiveMemoryWarningNotification: notification.
Il metodo didReceiveMemoryWarning
Il metodo didReceiveMemoryWarning viene inviato al controller di visualizzazione quando l'app riceve un avviso di memoria. L'implementazione di questo metodo dovrebbe fare tutto il possibile per ridurre il suo uso della memoria. Questo può comportare drastici passaggi come le viste di chiusura, ma ci sono molti altri passaggi che puoi fare che dipendono dal tuo specifico controller di visualizzazione e dalle sue viste.
Ad esempio, se sono stati memorizzati dati e oggetti, è possibile rimuoverli e impostarli su zero se è possibile ricrearli secondo necessità.
L'applicazioneDidReceive MemoryWarning: metodo
Il delegato dell'applicazione deve impostare qualsiasi riferimento a oggetti che può tranquillamente liberare a zero.
UIApplicationDidReceiveMemory WarningNotification: notification
Le notifiche a bassa memoria vengono inviate al Centro di notifica, dove tutte le notifiche sono centralizzate. Un oggetto che vuole essere informato su qualsiasi notifica si registra al Centro di notifica indicando la notifica di cui vuole essere informato e un blocco da chiamare quando viene sollevata la notifica. Invece di un blocco, puoi fornire un metodo target da chiamare.
Un oggetto modello, ad esempio, potrebbe quindi rilasciare strutture di dati o oggetti di sua proprietà che non ha bisogno immediatamente e può ricreare in seguito impostando riferimenti a zero.
Per quelli di voi che sono curiosi, nel vostro oggetto modello, potete aggiungere quanto segue:
[[NSNotificationCenter defaultCenter] addObserverForName: UIApplicationDidReceiveMemoryWarningNotification oggetto: [UIApplication sharedApplication] queue: nil usingBlock: ^ (NSNotification * notif) {// qui il tuo codice }];
È possibile testare applicationDidReceiveMemoryWarning: e UIApplicationDidReceiveMemoryWarningNotification: nel simulatore, selezionando Hardware → Simula memoria avviso.
Scegliere la giusta strategia di gestione della memoria per la tua applicazione
Ciascuna di queste strategie offre a una parte diversa della tua app la possibilità di liberare la memoria di cui non ha più bisogno (o che non ha bisogno in questo momento). Il modo in cui effettivamente queste strategie funzionano per te dipende dall'architettura della tua app, quindi dovrai esplorarlo da solo.
Il fatto di non liberare memoria sufficiente comporterà che iOS invii all'app l'applicazioneWillTerminate: messaggio e chiudo l'app. Per molte app, tuttavia, la migliore difesa è un buon attacco, il che significa che è necessario gestire la memoria in modo efficace ed eliminare eventuali perdite di memoria nel codice seguendo le regole ARC.
Per testare, implementare tutti questi metodi e inserire le istruzioni NSLog al loro interno insieme ai punti di interruzione in modo da poter vedere i problemi di memoria non appena si verificano. È facile individuare i luoghi in cui è possibile liberare memoria, ma è più efficiente rivolgersi a quelli che forniscono il più grande successo per il tuo programma di programmazione.
