Capisco che devi stare attento con autorelease
su iOS. Ho un metodo che sta restituendo un oggetto è alloc
s che è necessario per il chiamante, quindi in questa situazione - a quanto ho capito - ho bisogno di inviare autorelease
all'oggetto nel chiamato prima che ritorni.Quando autorelease provoca effettivamente un rilascio in Cocoa Touch?
Questo va bene, ma una volta che il controllo ritorna al telefono (cioè dopo che il mio clic sul pulsante è stato elaborato) sembra che il pool di autorelease sia stato rilasciato. Sospetto che sia così che dovrebbe essere, ma mi chiedo quale sia la migliore pratica per questa situazione.
Ho fatto ricorso all'invio di un messaggio retain
dal chiamante in modo che l'oggetto non venga rilasciato e rilasciandolo esplicitamente in dealloc
.
È questo l'approccio migliore?
A rigor di termini, anche questo non è garantito, dal momento che si potrebbe creare una piscina in un metodo, autorelease alcuni oggetti, e svuotare la piscina in un altro metodo. Un design dubbio, ma valido: gli oggetti dureranno dalla creazione del pool al drenaggio della piscina, indipendentemente dal metodo che ha creato il ritorno del pool. –