Al giorno d'oggi, la raccomandazione ufficiale di Apple è:
- (id)init{
self = [super init];
if(self){
_rssItems = [[NSMutableArray alloc]init];
}
return self;
}
L'idea è che init
(in particolare, in questo caso, [super init]
) è consentito per restituire un oggetto diverso da sé, e il comportamento previsto in quel caso è quello di lavorare con quell'oggetto invece - il modo più semplice per gestire questo è semplicemente impostare self
su qualsiasi risultato di super
. Si noti inoltre che return self;
funziona correttamente se lo è nullo o meno, quindi l'inversione del valore di if
.
Naturalmente, la maggior parte classi non eseguono questo trucco commutazione - ma questo è di buona prassi in ogni caso perché Apple si aspetta che tutti siano di utilizzare questo modello esatto per la loro init
, quindi, anche se la sottoclasse attualmente lavora senza assegnare a self
, potrebbero facilmente cambiare quel comportamento in futuro senza preavviso.
Grazie, ma ora la mia app si arresta in modo anomalo perché EXC_BAD_ACCESS ... Strano perché il numero precedente è scomparso. – AmiiQo
Appena risolto, grazie! – AmiiQo
Grazie andyvn22. – Morkrom