Objective-C: init vs initialiser
En Objective-C, quelle est la différence entre le init
méthode (c'est à dire le désigné de l'initialiseur de classe) et le initialize
méthode? Ce code d'initialisation doit être mis dans chaque?
Vous devez vous connecter pour publier un commentaire.
-init
est une méthode d'instance, utilisé pour initialiser un objet particulier.+initialize
est une méthode de classe, avant d'exécuter des instances de la classe sont créés et avant que d'autres méthodes de la classe sont exécutés.+initialize
n'est pas quelque chose que vous utilisez la plupart du temps, mais c'est très pratique pour mettre en place toutes les variables statiques que l'ensemble de la classe peut utiliser, ou pour s'assurer que certaines conditions sont remplies avant tout des instances sont créées.Le code qui appartient à un
-init
méthode est décrite à fond dans le Mise en œuvre d'un Initialiseur section de L'Objectif-Langage De Programmation C. Il y a également discuté de l'initialisation des classes (c'est à dire+initialize
) et pourquoi vous pourriez avoir besoin de le faire dans le même document, dans la Les Objets De La Classe section. Le code qui va dans+initialize
sera généralement très lié à l'une fonctionnalité spéciale de la classe qui vous oblige à initialiser dans la première place. Une chose importante à garder à l'esprit dans+initialize
(et dans toute méthode de classe), c'est queself
dans une méthode de classe fait référence à la classe elle-même, et non une instance de la classe.+initialize
méthode). Vous pouvez en fait créer une instance d'une classe sans l'envoi de cette classe un message (avec leIMP
de il est de créer de la méthode d'instance (généralement+allocWithZone:
mais cela peut varier)).if (self == [NameOfClass class])
à l'intérieur de+initialize
méthode, pourquoi avons-nous besoin de vérifier? Je sais que c'est quelque chose à voir avec+initialize
appel d'une méthode sur un parent de la classe deux fois, mais il n'est pas clair pour moi. Toute aide appréciée!+initialize
est appelée une seule fois par classe, une seule application peut être appelée plusieurs fois, dont une fois pour la classe dans laquelle il est et une fois pour chaque sous-classe qui ne fournit pas son propre+initialize
méthode.D'établir un parallèle pour les développeurs Java, init est un peu comme un constructeur, tandis que l'initialiser, c'est comme un bloc statique sur une classe.