2010-10-21 13 views

Respuesta

2

de la documentación de Apple:

InitWithCoder codifica un objeto para su archivo. Un codificador ordena al objeto que lo haga invocando encodeWithCoder: o initWithCoder :. encodeWithCoder: indica al objeto que codifique sus variables de instancia al codificador proporcionado ...

InitWithNibName Devuelve un objeto NSNib inicializado al archivo nib en el paquete especificado. Después de que se haya cargado el archivo nib, el objeto NSNib utiliza el mapa de recursos del paquete para localizar recursos adicionales a los que hace referencia el plumín. Si ha especificado nil para el parámetro bundle, el objeto NSNib busca en su lugar los recursos del paquete asociado con la clase del propietario del archivo nib. Si el archivo nib no tiene un propietario, el objeto NSNib busca recursos adicionales en el paquete principal de la aplicación.

El primero se usa para codificar objetos individuales en su código, este último se usa para recuperar un archivo NSNib que contiene objetos de recursos.

5

initWithNibName: se utiliza generalmente con un objeto controlador de vista. La idea es que tenga un archivo NIB (o XIB, lo mismo) que tenga un UIView (o NSView) que ya haya diseñado en Interface Builder. Cuando se inicia el controlador de vista, tiene una propiedad y una toma de corriente view que debe dibujar usted mismo, excepto que ya lo ha diseñado en IB. Entonces este constructor le permite disparar el nuevo objeto controlador y le dice en qué archivo NIB buscar su vista. La discusión sobre el cableado de su NIB para asegurarse de que sea exitosa está un poco más allá del tema aquí.

initWithCoder: tiene otra tarea por completo. Cuando haya serializado un objeto usando encodeWithCoder:, eventualmente necesitará deserializar (o "descodificar") esos datos para convertirlos de nuevo en un objeto de su clase.

De todos modos, para recapitular: implementaría encodeWithCoder: y initWithCoder: en su clase solo si desea que su objeto sea compatible con el protocolo NSCoding. Utiliza initWithNibName: (normalmente no lo implementa usted mismo) cuando desea iniciar un objeto que puede inicializar sus propiedades con objetos archivados en un archivo NIB.

Hay una gran vista general de NSCodingover here.

+1

ah, parece que Jordan ya lo ha clavado, debajo ;-) –

1

Storyboard

Usted debe preferir -initWithCoder: a -initWithNibName ya que sólo el primero se invoca cuando se carga una vista desde Storyboard.

Cuestiones relacionadas