Ha senso scrivere self = [super init];
in un metodo di inizializzazione personalizzato mentre sottoclassi NSObject? So che è necessario quando sottoclassi qualsiasi altra classe, perché potrebbe avere un'inizializzazione personalizzata, ma il metodo init di NSObject fa qualcosa?Il metodo init NSObject fa qualcosa?
risposta
Un oggetto non è pronto per essere utilizzato fino a quando non è stato inizializzato. Il metodo init
definito nella classe NSObject
non esegue l'inizializzazione; semplicemente restituisce se stesso.
Quindi in sostanza non è necessario chiamare [super init]
in una sottoclasse NSObject
, ma lo consiglierei comunque. È semplicemente un design migliore. Se cambi la superclasse, funzionerà ancora.
Fonte: NSObject Class Reference.
+1 per "Lo raccomando ancora" - l'implementazione NSObject potrebbe cambiare, potresti cambiare la superclasse della tua classe, ecc. Non è compito della tua classe inferire le cose sul comportamento della sua superclasse. – Tim
Grazie, ha senso. :) –
No, davvero, il tuo codice è ** sbagliato ** se non si 'self = [super init ...];'. Non importa quale sia l'implementazione di 'NSObject'; utilizzare il pattern ovunque in modo coerente per ridurre al minimo la fragilità e poiché seguire gli schemi corretti documentati porta a più app gestibili. – bbum
È una buona abitudine entrare. – Kyle