He estado siguiendo una serie de tutoriales y me estoy cayendo con uno mismo. ¿Alguien puede ayudar, por favor?Entender el "yo" y configurar uno mismo al súper
Tengo el siguiente init, que es un método de instancia.
- (id) initWithScore:(int) s {
self = [super init];
if (self) {
score = s;
}
return self;
}
Ahora, leyendo el código establecí el self en el superinicio, por lo que el self ahora apunta a super. Luego compruebo si self es válido y establezco una puntuación igual al valor que envié en mi InitWIthScore. Tengo esto hasta ahora.
Pero ahora vuelvo self que apunta a la súper, entonces ¿cómo estoy devolviendo mi subclase?
Por lo tanto, digamos que alguien llama a mi clase que pasa en 100, mi código es devolver el súper, no la clase, ¿cómo funciona? ¿Cómo el código de llamada tiene un valor de 100 en la puntuación?
por supuesto, sí lo hace el trabajo pero no tengo ni idea de por qué :-(
¡genial !, eso es lo que estaba buscando ... Tan en mí mismo :-) eso es bueno, ¿pero también en mí? ¿Aunque super sería la superclase? es decir, NSObject? – Martin
tan self = [super init]; ahora self es igual a mi súper clase de NSObject, o es igual a mí, pero ahí es donde me confundo, viene de un fondo .net/java. Si llamo a mi súper clase y hago un init, entonces el súper es en realidad nsobject, ¿no es – Martin
@Martin, actualicé un poco la respuesta, espero que aclare. Si tiene una clase 'Foo' que hereda' NSObject', 'Foo' también es' NSObject' - la relación is-a. 'self' y' super' apuntan a la misma memoria pero la trata diferente al resolver. – driis