2012-01-21 9 views

risposta

17

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.

+0

Grazie, ma ora la mia app si arresta in modo anomalo perché EXC_BAD_ACCESS ... Strano perché il numero precedente è scomparso. – AmiiQo

+0

Appena risolto, grazie! – AmiiQo

+0

Grazie andyvn22. – Morkrom

Problemi correlati