¿Puede alguien explicarme cuándo usar initWithNibName y cuándo usar initWithCoder?Diferencia entre initWithNibName e initWithCoder
Respuesta
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.
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 NSCoding
over here.
Storyboard
Usted debe preferir -initWithCoder:
a -initWithNibName
ya que sólo el primero se invoca cuando se carga una vista desde Storyboard.
- 1. diferencia entre SDK e IDE
- 2. ¿Diferencia entre void main e int main?
- 3. Diferencia entre default-initialize e value-initialize?
- 4. Diferencia entre var_dump, var_export e print_r
- 5. ¿Hay alguna diferencia entre RPC e IPC?
- 6. Diferencia entre EXISTS e IN en SQL?
- 7. ¿Diferencia entre long e int en C#?
- 8. Diferencia entre devoluciones e impresión en python?
- 9. diferencia entre puntos numpy() e interior()
- 10. Diferencia entre if -e y si -f
- 11. ¿La diferencia entre sys.stdout.write e print?
- 12. Diferencia entre cvMat, Mat e IpImage
- 13. ¿Diferencia entre servicio e hilo en Android?
- 14. ¿Diferencia entre paquete e instalación de gema?
- 15. ¿Diferencia entre nueva e inicialización en Smalltalk?
- 16. Diferencia entre objetos mutables e inmutables
- 17. ¿Cuándo utiliza encodeWithCoder: e initWithCoder: en el iPhone?
- 18. UIViewController (init y initWithNibName)
- 19. initWithCoder: no visible en NSObject?
- 20. ¿Qué es initWithCoder?
- 21. loadNibNamed de initWithNibName VS NSBundle
- 22. ¿Cuál es la diferencia entre require e include con php?
- 23. ¿Cuál es la diferencia entre IEnumerator e IEnumerable?
- 24. ¿Cuál es la diferencia entre AxInterop e Interop?
- 25. ¿Cuál es la diferencia entre identidad e igualdad en OOP?
- 26. ¿Cuál es la diferencia entre IDREF e IDREFS en XSD?
- 27. Diferencia entre IEnumerable e IEnumerable <T>?
- 28. ¿Cuál es la diferencia entre "indefinido" e indefinido?
- 29. ¿Cuál es la diferencia entre PHP require e include?
- 30. ¿Cuál es la diferencia entre "privado" e "interno protegido"?
ah, parece que Jordan ya lo ha clavado, debajo ;-) –