vida util puedo precio plus original duracion dura cuanto capacidad bateria actualizar iphone objective-c cocoa-touch

util - no puedo actualizar mi iphone 6



¿Qué hace[super viewWillAppear], y cuándo se requiere? (4)

-(void)viewWillAppear:(BOOL)animated{ //something here [super viewWillAppear]; }

Es [super viewWillAppear]; siempre requerido? Si no, ¿cuándo y por qué lo usas?


Digamos que tienes 2 clases, un padre y un niño. El niño hereda de los padres. Tienen un método llamado saludo que devuelve una cadena.

Aquí es cómo se ve el método principal:

Código:

-(NSString *)greet { return @"Hello"; }

Queremos que el niño aprenda de sus padres. Así que usamos súper para saludar cómo lo saludaría mamá, pero también con nuestras pequeñas adiciones.

Código: // Heredado de los padres

-(NSString *)greet { NSString *parentGreeting = [super greet]; return [parentGreeting stringByAppendingString:@", Mommy"] }

Así que ahora Padre saluda "Hola", y el Niño saluda "Hola, mamá". Más adelante, si cambiamos el saludo de los padres para devolver solo "Hola", ambas clases se verán afectadas y usted tendrá "Hola" y "Hola, mamá".

super se utiliza para llamar a un método como lo define una superclase. Se utiliza para acceder a métodos que han sido sustituidos por subclases para que la clase pueda ajustar su propio código en torno a un método que implementa su clase primaria. Es muy útil si está haciendo algún tipo de herencia.


En mi experiencia, llamar a [super viewWillAppear] en la primera línea, al llamar a reloadData después de eso, hace que sea imposible recuperar la fila seleccionada anteriormente al regresar de una vista detallada. Cuando [super viewWillAppear] es la última oración, puede obtener la fila seleccionada y mostrar la sugerencia de fila previamente seleccionada. Esto sucede solo cuando se usa [tableView reloadData] dentro de viewWillAppear .


En primer lugar, la placa de caldera correcta debe ser:

-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //something here }

En otras palabras, llama super primero , luego haz lo tuyo. Y tienes que pasar el parámetro animated a super .

Por lo general, se debe llamar primero a la implementación de la súper clase en cualquier método. En muchos idiomas se requiere. En Objective-C no lo es, pero puede tener problemas fácilmente si no lo pone en la parte superior de su método. (Dicho esto, a veces rompo este patrón.)

¿Se requiere super''s implementación super''s llamada? En el caso de este método en particular, podría obtener un comportamiento inesperado si no lo llama (especialmente si ha subclasificado un UINavigationController por ejemplo). Así que la respuesta es no, no en un sentido técnico, pero probablemente siempre deberías hacerlo.

Sin embargo, en muchos otros métodos puede haber buenas razones para no llamar a super .


Llamar al super método ofrece la posibilidad de ejecutar código en la clase padre.

Respecto a tu pregunta según Apple doc.

Entonces, sí, este método requiere.