Ho seguito un certo numero di esercitazioni e sto cadendo da solo. Qualcuno può aiutare, per favore?Comprendere il "sé" e impostarlo su super
Ho il seguente init, che è un metodo di istanza.
- (id) initWithScore:(int) s {
self = [super init];
if (self) {
score = s;
}
return self;
}
Ora la lettura attraverso il codice ho impostato l'auto al super init, quindi auto è ora indicando al super. Quindi controllo se self è valido e imposta il punteggio uguale al valore che ho inviato sul mio InitWIthScore. Ho ottenuto questo finora.
Ma ora ritorno auto che indica il super, quindi come posso restituire la mia sottoclasse?
Quindi, diciamo che qualcuno chiama la mia classe che passa in 100, il mio codice restituisce il super non la classe, quindi come funziona? In che modo il codice chiamante ha un valore di 100 nel punteggio?
naturalmente, sì, funziona ma non ho idea del perché :-(
fantastico !, questo è quello che stavo cercando .. Così me stesso in me :-) questo è buono, ma super anche in me? anche se super sarebbe la superclasse? cioè NSObject? – Martin
quindi self = [super init]; ora self è uguale alla mia super classe di NSObject, o è uguale a me ma questo è dove mi confondo, arrivando a formare uno sfondo .net/java. Se chiamo la mia super classe e faccio un init allora il super è in realtà nsobject non è lo – Martin
@ Martin, ho aggiornato la risposta un po ', spero che chiarisca. Se hai una classe 'Foo' che eredita' NSObject' allora 'Foo' è anche un' NSObject' - la is-a. 'self' e' super' puntano alla stessa memoria ma la considerano diversa quando si risolve. – driis