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?

Author: jrdioko, 2011-05-31

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.

 125
Author: Caleb,
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.

 16
Author: Eki,
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