C’est peut-être évident, mais je ne sais pas comment déclarer des propriétés de la classe en Objective-C.
J’ai besoin de cache un dictionnaire par classe et étonnant comment mettre dans la classe.
C’est peut-être évident, mais je ne sais pas comment déclarer des propriétés de la classe en Objective-C.
J’ai besoin de cache un dictionnaire par classe et étonnant comment mettre dans la classe.
Propriétés ont un sens particulier en Objective-C, mais je pense que tu veux dire quelque chose qui est équivalente à une variable statique ? Par exemple seul instance pour tous les types de Foo ?
Pour déclarer des fonctions de classe en Objective-C, vous utilisez le + préfixe au lieu de - si votre implémentation pourrait ressembler à :
Si vous cherchez l’équivalent de niveau classe de , alors la réponse est « il n’y a aucune une telle chose ». Mais n’oubliez pas,
est le seul sucre syntaxique, en tout cas ; il crée juste méthodes objet bien-nommé.
Vous souhaitez créer des méthodes de la classe qui accèdent à des variables statiques, qui, comme d’autres l’ont dit, ont seulement une syntaxe légèrement différente.
Car à la réponse de Andrew Grant, il devrait être un peu changé pour la sécurité des threads :
Ces modifications assurent que fooDict est créée uniquement une fois.
De la documentation Apple: « dispatch_once - exécute un objet bloc une fois et une seule fois pendant la durée de vie d’une application. »
Les propriétés ont des valeurs uniquement dans les objets, et non des classes.
Si vous avez besoin de stocker quelque chose pour tous les objets d'une classe, vous devez utiliser une variable globale. Vous pouvez le masquer en déclarant static
dans le fichier d'implémentation.
Vous pouvez également envisager d'utiliser des relations spécifiques entre vos objets: vous attribuer un rôle de maître à un objet spécifique de votre classe et de votre lien d'autres objets de ce maître. Le maître va tenir le dictionnaire comme une simple propriété. Je pense à un arbre comme celui utilisé pour le point de vue de la hiérarchie dans les applications Cocoa.
Une autre option est de créer un objet d'une classe dédiée qui est composée à la fois de votre "classe" dictionnaire et d'un ensemble de tous les objets liés à ce dictionnaire. C'est quelque chose comme NSAutoreleasePool
de Cacao.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.