2012-04-02 8 views

risposta

8

Tecnicamente, no. Il documentation for -[NSObject init] dice che

Il metodo init definito nella classe NSObject non fa di inizializzazione; restituisce semplicemente self.

Perché è documentato e, probabilmente, c'è già un mucchio di codice che si basa su di esso, questo fatto è altamente improbabile che il cambiamento nelle future versioni di Mac OS X.

Edit:BoltClock's a Unicorn porta un punto che vorrei rendere più iperbolico: il tempo totale risparmiato non chiamando il numero -[NSObject init] per tutti quelli che eseguono il tuo programma è improbabile che superi il tempo di debugging che potresti subire se cambi mai la superclasse della tua classe in qualcosa diverso da NSObject e dimentica di aggiungere una chiamata allo [super init].

4

Dal documentation, non sembra fare alcuna inizializzazione affatto:

Procedimento init definita nella classe NSObject fa nessuna inizializzazione; restituisce semplicemente self.

suppongo che sarebbe stato innocuo non chiamare [super init], ma non c'è ragione per non seguire le convenzioni e, sai, lo chiamano nella sottoclasse comunque. Ad esempio, la sottoclasse potrebbe in futuro ereditare da un'altra classe, che potrebbe contenere la logica di inizializzazione nel proprio metodo -init che la sottoclasse richiederà.

0

Basta chiamare uno degli inizializzatori designati di super nell'implementazione perché è sufficiente eseguire ciò che è chiaro e corretto.