pestañas home como cerrar boton aplicaciones abiertas iphone objective-c cocoa-touch

home - como cerrar pestañas abiertas en iphone



¿La mejor forma de determinar si un UIViewController se ha cargado y tiene una vista válida? (3)

Cuando se accede a la propiedad view de un UIViewController, primero verifica si tiene una vista existente y la devuelve. Si no, carga su punta o llamadas -loadView.

Cuando un controlador recibe un mensaje -didReceiveMemoryWarning, el comportamiento predeterminado es eliminar esa vista en caché (suponiendo que no esté en uso en ese momento).

Si anulo -didReceiveMemoryWarning, ¿cómo puedo determinar si la vista se ha borrado? Según entiendo, la implementación predeterminada verifica si self.view.superview == nil. Si es así, borra la vista en caché. Por supuesto, primero verifica si hay una vista en caché, y si no, no hace nada. Sin embargo, yo, como una subclase, no puedo llamar a self.view.superview, ya que si no hay una vista, generará una.

Entonces, ¿cómo averiguo si _view existe? (No puedo simplemente mirar _view; tengo errores de enlace cuando construyo para el dispositivo).


Creo que en tu situación es mejor hacer algo como:

- (void)setView:(UIView *)view { if (!view) { // Clean up code here } [super setView:view]; }


Desde iPhone OS 3.0, puede usar el método isViewLoaded para ver si se carga una vista.


Puede usar object_getIvar () para obtener el valor sin pasar por el acceso. Básicamente, le permite acceder a _view sin necesidad de crear un vínculo en su contra. Por otro lado, tiene el potencial de romperse si el ivar actual se va o se renombra. Tradicionalmente, eso nunca fue una preocupación real, pero el iPhone usa el tiempo de ejecución moderno que no sufre problemas de clase base frágiles, por lo que Apple podría sentirse más inclinado a hacer ese tipo de cambios.