Dans Objective-C, quelle est la différence entre la méthode init
(c'est-à-dire l'initialiseur désigné pour une classe) et la méthode initialize
? Quel code d'initialisation doit être mis dans chacun?
-init
est une méthode d'instance, utilisée pour initialiser un objet particulier. +initialize
est une méthode de classe, exécutée avant la création de toute instance de la classe et avant l'exécution d'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 garantir que certaines conditions sont remplies avant la création d'instances.
Le code qui appartient à un -init
est décrite en détail dans la section Implémentation d'un initialiseur de Le langage de programmation Objective-C . Il y a aussi une discussion sur l'initialisation des classes (c'est-à-dire +initialize
) et pourquoi vous pourriez avoir besoin de le faire dans le même document, dans la section Class Objects . Le code qui entre dans +initialize
sera généralement fortement lié à la fonctionnalité spéciale de la classe qui vous oblige à l'initialiser en premier lieu. Une chose importante à garder à l'esprit dans +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, pas à une instance de la classe.
Pour tracer un parallèle pour les développeurs Java développeurs, init est comme un constructeur, tandis que initialize est comme un bloc statique sur une classe.