Apple afferma che questa è una buona idea per il salvataggio della memoria. Come apparirebbe nel codice?Come si crea un pool autorelease locale per risparmiare memoria?
6
A
risposta
11
Di solito non è necessario creare un pool di autorelease, perché il sistema si preoccupa di questo. Ma a volte devi farlo. È solito in grandi loop. Codice sarebbe simile a questa:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int i;
for (i = 0; i < 1000000; i++) {
id object = [someArray objectAtIndex:i];
// do something with object
if (i % 1000 == 0) {
[pool release];
pool = [[NSAutoreleasePool alloc] init];
}
}
[pool release];
piscine autorelease sono tenuti come uno stack: se si effettua una nuova piscina autorelease, esso viene aggiunto in cima alla pila, e ogni messaggio autorelease mette il ricevitore nella piscina più in alto .
Problemi correlati
- 1. Nessun pool autorelease con JOGL
- 2. NSAutoreleasePool. Quando è opportuno creare un nuovo pool di autorelease?
- 3. Pool di autorelease in Objective-C - rilasciare AutoreleasePool principale?
- 4. Perché non esiste un pool di autorelease quando eseguoSelectorInBackground :?
- 5. quando dovrei inserire il mio codice nel pool di autorelease
- 6. .NET crea un pool interno di stringhe per ogni assembly?
- 7. Gestione memoria Objective-C (alloc e autorelease)
- 8. Come risparmiare memoria durante l'utilizzo di Multiprocessing in Python?
- 9. Come si crea un pool di connessioni MySQL mentre si lavora con NodeJS ed Express?
- 10. Come si crea un file di requisiti pip per un archivio tar sul mio filesystem locale?
- 11. Autorelease o Not to Autorelease
- 12. Come funzionano i pool di memoria?
- 13. Posso liberare anticipatamente un oggetto autorelease?
- 14. pagina piscina Autorelease danneggiato
- 15. Script Python con Gevent Pool, consuma molta memoria, si blocca
- 16. Il modo migliore per scaricare periodicamente il pool di autorelease su un thread in background di lunga durata?
- 17. Java: le variabili globali fanno risparmiare memoria e/o tempo?
- 18. Come autorelease CGColorRef
- 19. Come si crea un metaclasse?
- 20. rilascio/confusione autorelease nel cacao per iphone
- 21. Come scaricare l'immagine quando non è 'in vista' per risparmiare memoria?
- 22. È necessario creare un pool di autorelease sotto ARC in GCD?
- 23. Ciascun pool php-fpm ha il proprio pool di memoria?
- 24. Come si crea un "codice promozionale" per un'app per iPhone
- 25. blocchi di pool autorilease iOS
- 26. Come risparmiare memoria durante la lettura di un file in Php?
- 27. Pool di memoria nel driver Kernel per più processi
- 28. Memoria locale e cookie
- 29. Memoria del pool di paging o memoria del pool Non paginato ?? (sviluppo driver windows)
- 30. Gestione della frammentazione in un pool di memoria?
Buona descrizione. Chiamare objectAtIndex: tuttavia non aggiunge nulla al pool autorelease, quindi è OK utilizzarlo in un loop senza il pool di autorelease. –
Ricorda che Apple consiglia di utilizzare [pool drain] invece di [pool release] come abitudine per la compatibilità futura con gli ambienti GC. –
@Marc Charbonneau quindi non avresti una perdita per non chiamare l'uscita in piscina? –