Variable de classe??
tablier
Membre
J'aimerais que l'on m'explique!!
Dans "Objective-C précis & concis" (page 8 ) je lis: l'ensemble des éléments d'une classe sont appelés "Champs".
Et en note je lis ceci:
Les champs sont aussi appelés des "variables d'instance". Nous préférons le mot "champs" pour plusieurs raisons: "variables d'instance" est redondant puisqu'il n'y a pas de variables de classe; cette expression est aussi ambiguë puisqu'elle peut faire penser que ce sont les variables qui sont des instances. "variables" seul serait aussi .... etc
Alors, je pose la question suivante: parler de variables de classe et de variables d'instance dans objective-C n'est-ce pas faire une confusion avec les définitions du C++?
Dans "Objective-C précis & concis" (page 8 ) je lis: l'ensemble des éléments d'une classe sont appelés "Champs".
Et en note je lis ceci:
Les champs sont aussi appelés des "variables d'instance". Nous préférons le mot "champs" pour plusieurs raisons: "variables d'instance" est redondant puisqu'il n'y a pas de variables de classe; cette expression est aussi ambiguë puisqu'elle peut faire penser que ce sont les variables qui sont des instances. "variables" seul serait aussi .... etc
Alors, je pose la question suivante: parler de variables de classe et de variables d'instance dans objective-C n'est-ce pas faire une confusion avec les définitions du C++?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce n'est peut-être pas directement des "variables de classes" au sens C++, mais le concept est là , surtout.
Le "concept" dit ceci : les "variables de classes" sont accessibles par tous les objets de cette classe, et les variables d'instances sont rattachées à une instance (un objet).
Un petit tuto sur P:O
Mais en réalité, si je ne dis pas trop de c*nneries, Objective-C ne permet pas de définir des variables à l'intérieur des classes (c'est ce que veut dire ton bouquin), mais en utilisant des subterfuges, on y arrive quand même : par exemple des variables gloables déclarées en "static" dans le fichier .m de la classe (donc non accessibles de l'extérieur, cf l'explication récente de Bru à ce sujet), et on rend la variable accessible via des accesseurs de la classe genre [tt]+(int)mavar[/tt] et [tt]+setMavar:(int)v[/tt].
Conclusion : en effet on ne peut pas techniquement définir des variables de classes, mais en réalité on arrive à retrouver le concept.
Je pense donc pouvoir résumer la chose ainsi: Il n'y a pas formellement de variable de classe en Objective-C, mais comme cette fonctionnalité est intéressante (voir indispensable) on s'arrange pour créer quelque chose d'équivalent. Bru ayant parfaitement décrit l'intérêt de la chose dans un message précédent.
A+
Au début ma réflexion a été de te dire "ben si y'a des variables de classes en ObjC..." et puis "ah ben mince, tiens, non, c'est vrai ça"... "ah ben oui c'est vrai c'est pour ça qu'on fait les static machin"... "ah ben oui ayé je vois le lien d'un coup avec l'explication de Bru sur l'autre post"... "ouah, mégatilt" ;D