Objective-C: init vs initialise

En Objective-C, quelle est la différence entre la méthode init (l’initialiseur désigné pour une classe) et la méthode d’ initialize ? Quel code d’initialisation doit être mis dans chacun?

-init est une méthode d’instance utilisée pour initialiser un object particulier. +initialize est une méthode de classe, exécutée avant la création des instances de la classe et avant l’exécution des autres méthodes de classe. +initialize n’est pas quelque chose que vous utilisez la plupart du temps, mais c’est pratique pour configurer toutes les variables statiques que la classe dans son ensemble pourrait utiliser, ou pour s’assurer que certaines conditions sont remplies avant la création des instances.

Le code qui appartient à une méthode -init est décrit en détail dans la section Implémentation d’un initialiseur du langage de programmation Objective-C . Il y a aussi quelques discussions sur l’initialisation des classes (c.-à-d. +initialize ) et pourquoi vous pourriez avoir besoin de le faire dans le même document, dans la section Objets de classe . Le code qui entre dans l’ +initialize sera généralement fortement lié aux fonctionnalités spéciales de la classe qui vous obligent à l’initialiser en premier lieu. Une chose importante à garder à l’esprit dans l’ +initialize (et dans toute méthode de classe) est que self dans une méthode de classe fait référence à la classe elle-même, et non à une instance de la classe.

Pour dessiner un parallèle pour les développeurs Java, init est comme un constructeur, tandis que l’initialisation est comme un bloc statique sur une classe.