Objetivo-C: inicio vs inicialización
En Objective-C, ¿cuál es la diferencia entre el método init
(es decir, el inicializador designado para una clase) y el método initialize
? ¿Qué código de inicialización se debe poner en cada uno?
2 answers
-init
es un método de instancia, utilizado para inicializar un objeto en particular. +initialize
es un método de clase, se ejecuta antes de que se creen las instancias de la clase y antes de que se ejecuten otros métodos de clase. +initialize
no es algo que use la mayoría del tiempo, pero es útil para configurar cualquier variable estática que la clase en su conjunto pueda usar, o para asegurarse de que se cumplan ciertas condiciones antes de crear cualquier instancia.
El código que pertenece a un método -init
se describe a fondo en el Implementando una sección del Inicializadorde El Lenguaje de Programación Objective-C. También hay un poco de discusión sobre la inicialización de clases (es decir, +initialize
) y por qué podría necesitar hacerlo en el mismo documento, en la sección Class Objects. El código que entra en +initialize
generalmente estará fuertemente ligado a la funcionalidad especial de la clase que requiere inicializarlo en primer lugar. Una cosa importante a tener en cuenta en +initialize
(y en cualquier método de clase) es que self
en un método de clase se refiere a la clase en sí, no a una instancia de la clase.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-31 18:36:22
Para dibujar un paralelo para los desarrolladores Java, init es como un constructor, mientras que initialize es como un bloque estático en una clase.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-01 20:34:45