Su iOS/CocoaTouch vedo spesso il codice che crea una nuova istanza di NSAutoreleasePool all'interno di un metodo. Di recente ne ho visto uno in una NSOperation.NSAutoreleasePool. Quando è opportuno creare un nuovo pool di autorelease?
Quali sono le regole di base per l'impostazione di una nuova istanza di NSAutoreleasePool? Perché è preferibile affidarsi semplicemente al pool di release preesistente creato in main.m?
Grazie,
Doug
Quando è un pool autorelease locale non utile. Raccolgo la motivazione per la creazione di uno è per la gestione dei mem grani fini. Inoltre, dichiari che un nuovo pool di autorelease deve essere creato per i nuovi thread. È vero per NSOperations? Sono un tester fanatico e non vedo perdite di mems con le mie attuali NSOperations che mancano di un pool di autorelease locale. – dugla
@dugla Non sono sicuro se è necessario crearne uno per NSOperations. Quando un oggetto viene rilasciato automaticamente senza pool, stampa un messaggio sulla console, quindi dovresti sapere se ne hai bisogno. La creazione di un pool non è vantaggiosa se non si creano molti oggetti durante la sua durata perché si aggiunge un'allocazione aggiuntiva e si riprendono i cicli del processore. Non può avere alcun beneficio a meno che non si utilizzino oggetti ogg-c durante la sua vita, dal momento che altri oggetti non la usano. – ughoavgfhw