iphony è corretto, ma lui o lei non dice che è necessario scrivere il metodo init da soli. Il vostro metodo init dovrebbe generalmente essere simile a questa:
- (id) init
{
if (self = [super init])
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
}
return self;
}
Anche se il apple documentation dice
Il metodo init definito nella classe NSObject non fa di inizializzazione; semplicemente restituisce se stesso.
e si può solo essere tentati di scrivere
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
Questo è sbagliato e non seguendo ciò che è esplicitamente dichiarato nella documentazione:
In un'implementazione personalizzata di questo metodo (init) , è necessario richiamare l'inizializzatore designato di Super , quindi inizializzare e restituire il nuovo oggetto.
DEVE. Non dovrebbe, potrebbe, dovrebbe, ecc.
Non si deve assumere che init di NSObject non cambi in futuro; né la superclasse da cui deriva la tua classe personalizzata.
fonte
2009-03-02 18:23:24
Ciò significa semplicemente inizializzare l'oggetto "newObject" come classe TheClass. Se TheClass non implementa "- (id) init" con "[super init]" e "return self;", l'inizializzazione probabilmente fallirà. – Klompengard