Sviluppo iPhone - Rilascia un oggetto rilasciato automaticamente
-
06-07-2019 - |
Domanda
Cosa succede se rilascio un oggetto rilasciato automaticamente? È un UIButton rilasciato automaticamente che voglio rilasciare e l'unico modo per creare un UIButton è utilizzare il metodo di convinenza buttonWithType :. Verrà rilasciato dalla memoria come un normale oggetto? O dovrei lasciare che la autoreleasepool se ne occupi? Se non ci fossi riuscito, non l'avrei rilasciato automaticamente.
Grazie !!
Soluzione
Dovresti lasciare che il pool di rilascio automatico si occupi di esso. Una volta aggiunto il pulsante a una vista padre, tale vista lo manterrà e l'handle del rilascio automatico verrà gestito dal pool di rilascio automatico.
Il modo più semplice di pensarci è in termini di proprietà che non "possiedi" il riferimento che hai ottenuto tramite un metodo di praticità, quindi non devi preoccuparti di rilasciarlo a meno che tu non lo conservi anche.
Altri suggerimenti
Devi solo rilasciare un oggetto di tua proprietà. + buttonWithType: non restituisce un oggetto di proprietà, quindi non è necessario rilasciarlo.
Rivedi le Cocoa Object Ownership Rules .
Perché stai cercando di evitare un oggetto rilasciato automaticamente qui? Presumibilmente stai creando il pulsante perché stai usando il pulsante e lo stai inserendo in una gerarchia di viste, quindi non c'è motivo reale per accelerare lo svuotamento del pool di autorelease che contiene il pulsante.