ios awakefromnib

ios - ¿Cuándo se llama awakeFromNib?



(2)

¿ awakeFromNib llama a awakeFromNib inmediatamente después de que se asigna e inicializa viewController? ¿En qué punto preciso se awakeFromNib el awakeFromNib de un controlador de vista? Desde mi sesión de depuración, veo que no se llama a [self.window makeKeyAndVisible] hasta que se [self.window makeKeyAndVisible] .


Cuando el codificador quiere cargar un objeto que aún no ha iniciado.

Exp: El control en UITableViewCell iniciará cuando el código llame a awakeFromNib que no necesita cellforrow .


awakeFromNib llama a awakeFromNib después de la vista y sus subvistas se asignaron e iniciaron. Se garantiza que la vista tendrá configuradas todas sus variables de instancia de salida.

EDITAR: Un recuento detallado de los eventos:

Durante el proceso de creación de instancias, cada objeto del archivo no está archivado y luego se inicializa con el método que corresponde a su tipo. Las vistas de cacao (y las vistas personalizadas que se pueden personalizar utilizando una paleta de Interface Builder asociada) se inicializan utilizando su método initWithCoder:. Las vistas personalizadas se inicializan utilizando su método initWithFrame:. Las clases personalizadas que se han instanciado en la punta se inicializan utilizando su método init.

Una vez que todos los objetos se han instanciado e inicializado desde el archivo, el código de carga de la punta intenta restablecer las conexiones entre las salidas de cada objeto y los objetos de destino correspondientes. Si sus objetos personalizados tienen salidas, un objeto NSNib intenta restablecer cualquier conexión que haya creado en Interface Builder. Comienza intentando establecer las conexiones utilizando primero los métodos propios de tu objeto. Para cada salida que necesita una conexión, el objeto NSNib busca un método con el formato setOutletName: en su objeto. Si ese método existe, el objeto NSNib lo llama, pasando el objeto objetivo como un parámetro. Si no definió un método de establecimiento con ese nombre exacto, el objeto NSNib busca en el objeto una variable de instancia (de tipo ID de IBOutlet) con el nombre de salida correspondiente e intenta establecer su valor directamente. Si no se puede encontrar una variable de instancia con el nombre correcto, no se produce la inicialización de esa conexión. Finalmente, después de que todos los objetos estén completamente inicializados, cada uno recibe un mensaje awakeFromNib.

Source

EDIT 2 : Esto no se aplica a los controladores de vista cargados desde guiones gráficos.