Ho allegato un UIGestureRecognizer a un UIView. Di chi è la responsabilità di rilasciare questo durante dealloc?Sono responsabile del rilascio di un gesture di riconoscimento di UIView in dealloc?
In particolare:
UITapGestureRecognizer *t =
[[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(tapHandler:)];
[self.view addGestureRecognizer:t];
[t release];
Quindi, self.view ha attualmente ritenzione pianta del gestureRecognizer.
Aggiornamento avrei dovuto essere più chiaro. La mia domanda ha a che fare con il metodo dealloc viste. La superclasse della vista gestisce il rilascio di gestureRecognizer quando viene rilasciata la vista. Attualmente presumo che sia così.
Non è una buona abitudine di chiamare autorelease su tutti i vostri oggetti invece di liberare voi stessi. – Tieme
@Tieme Non sono d'accordo. Mantiene tutto il codice di gestione della memoria in un posto che migliora la leggibilità e quindi riduce il rischio di perdite dovute alla dimenticanza di 'release'. Il rilascio ritardato non influirà sul limite massimo della memoria perché l'oggetto persisterà dopo l'uscita di questo metodo. Quali sono le ragioni per cui affermare che l'uso dell'autelease non è una buona abitudine? –
Sono d'accordo con te su questo esempio. Qui va bene chiamare autorelease. Ma non è ancora una buona abitudine portare sempre a termine l'autoreleasing degli oggetti, perché alla fine aggiungerà un po 'di overhead alla gestione della memoria. – Tieme