iphone - español - `[super viewDidLoad]` convención
cocoa touch español (2)
Digamos que tienes 2 clases, un padre y un hijo. El niño hereda de Parent. Tienen un método llamado greet que devuelve una cadena.
Aquí se muestra el aspecto del método principal:
Código:
-(NSString *)greet {
return @"Hello";
}
Queremos que el niño aprenda de sus padres. Así que utilizamos súper para saludar a mamá, pero con nuestras pequeñas adiciones también.
Código: // Hereda de Parent
-(NSString *)greet {
NSString *parentGreeting = [super greet];
return [parentGreeting stringByAppendingString:@", Mommy"]
}
Así que ahora Parent saluda "Hello" y el niño saluda "Hello, Mommy". Más adelante, si cambiamos el saludo de los padres para que solo devuelva "Hola", ambas clases se verán afectadas y usted tendrá "Hola" y "Hola, mamá".
super se usa para llamar a un método como lo define una superclase. Se utiliza para acceder a los métodos que han sido modificados por subclases para que la clase pueda ajustar su propio código en un método que implemente su clase principal. Es muy útil si está haciendo algún tipo de herencia en absoluto.
Veo un código de ejemplo con [super viewDidLoad] llamado antes de su implementación y después de su implementación.
Sé que no siempre tienes que llamar a super (como se ve en muchas otras discusiones). Cuando lo llamas, ¿se espera antes o después de que codifiques?
Esto podría tener consecuencias dependiendo de la implementación de Super. Aunque no deberías tener que saber la implementación de Super para escribir la tuya.
Por supuesto, esto aplica a todos los métodos delegados de UIViewControllers (willAppear, didAppear, etc ...)
¿Alguna idea?
Mi regla de oro es: si estás haciendo algo relacionado con la inicialización, siempre llama primero al método de la superclase (si vas a llamarlo). Esto le da a la súper clase la oportunidad de realizar cualquier configuración en la que pueda confiar más adelante en su método. Si estás haciendo algo relacionado con la destrucción, llama al último método de la superclase. Esto asegura que puede confiar en el estado del objeto durante la ejecución de su método. Finalmente, tome cualquier otro caso caso por caso. Por ejemplo, si está manejando un evento, probablemente quiera tratar primero con el evento y solo invocar el método de la superclase si elige no manejar el evento o si de alguna manera lo alteró y desea pasarlo a lo largo del evento. cadena.