¿Tiene sentido escribir self = [super init];
en un método de inicialización personalizado mientras se subclasifica NSObject? Sé que es necesario cuando se subclasifica cualquier otra clase, porque puede tener una inicialización personalizada, pero ¿el método init de NSObject hace algo?¿El método init de NSObject hace algo?
Respuesta
Un objeto no está listo para ser utilizado hasta que se haya inicializado. El método init
definido en la clase NSObject
no inicializa; simplemente regresa a sí mismo.
Así que, básicamente, no necesariamente tiene que llamar al [super init]
en una subclase NSObject
, pero aún así lo recomendaría. Es simplemente un mejor diseño. Si cambias la superclase, seguirá funcionando.
Fuente: NSObject Class Reference.
+1 por "Todavía lo recomendaría": la implementación de NSObject podría cambiar, podría cambiar la clase de la clase, etc. No es tarea de su clase inferir cosas sobre el comportamiento de su superclase. – Tim
Gracias, eso tiene sentido. :) –
No, en realidad, su código es ** incorrecto ** si no lo hace 'self = [super init ...];'. No importa lo que haga la implementación de 'NSObject'; utilice el patrón en todas partes constantemente para minimizar la fragilidad y porque seguir los patrones correctos documentados conduce a aplicaciones más fáciles de mantener. – bbum
- 1. Sintaxis correcta para el método init de Objective-C
- 2. Configuración de primavera Método Init
- 3. ¿El método de retención de NSObject es atómico?
- 4. método init en el controlador ZF2
- 5. ¿Comenzar con el método init o no?
- 6. ¿LD_INCLUDE_PATH realmente hace algo?
- 7. Función hash recomendada para sobreescribir el método hash de NSObject
- 8. ¿Application.EnableVisualStyles() hace algo?
- 9. iOS: UIButton titleLabel: ¿hace algo?
- 10. sub eax, 0 - ¿Hace algo?
- 11. Constructor de servlets y método init()
- 12. ¿<String> hace algo?
- 13. ¿Para qué se utiliza el método init() del servlet?
- 14. ¿Está bien llamar a un método init en sí mismo, en un método init?
- 15. consiguiendo const en un método init
- 16. ¿El método init de NSDateFormatter está en desuso?
- 17. ¿Qué hace el método super()?
- 18. ¿Qué hace el método registerNatives()?
- 19. NSKeyedUnarchiver unarchiveObjectWithFile: devuelve nil en init: método
- 20. Mock HttpContext.Current in Test Init Método
- 21. Práctica recomendada, anulando __construct() versus método init()
- 22. init y awakeFromNib
- 23. ¿Por qué [super init] alguna vez devolvería nil, cuando "super" es NSObject?
- 24. llamada presentModalViewController de la clase NSObject
- 25. ¿Tengo que llamar a [super init] o [super initWithCoder], etc. para NSObject
- 26. ¿El establecimiento de objetos Java a null hace algo más?
- 27. ¿Cómo Objective-C singleton debería implementar el método init?
- 28. ¿Puedo cancelar una acción Zend Controller en el método init()?
- 29. ¿Qué hace exactamente el método .join()?
- 30. ¿Cómo hace vim-pathogen algo más fácil?
Es un buen hábito para entrar. – Kyle