Je me trouve en train de déclarer des tas de variables de classe et il est vraiment fatigant d'écrire des méthodes get/set simples pour chaque variable. Donc, la question est de savoir comment synthétiser setters/getter pour les variables de classe dans objective-c?Existe-t-il un moyen de synthétiser des setters/getters pour les variables de classe en Objective-C?
Existe-t-il un moyen de synthétiser des setters/getters pour les variables de classe en Objective-C?
Répondre
Habituellement, lorsque vous regroupez un ensemble de variables connexes qui sont destinés à être accessibles globalement, vous créez ce qu'on appelle un Singleton:
What should my Objective-C singleton look like?
Cela signifie que vous avez une méthode de niveau de classe qui vous donne retour une instance commune - donc vous auriez un appel comme:
[MyClass sharedInstance].myProperty
Puisque les valeurs que vous stockez sont de véritables variables d'instance de classe, vous pouvez utiliser les propriétés normales, mais toutes les classes travaillera avec le même données partagées.
Notez que certaines personnes n'aiment l'utilisation de singletons, vous pouvez lire des mises en garde au sujet de la pratique:
Singleton: How should it be used
Mais puisque vous commencez déjà avec un singleton inhérent au développement iPhone (le délégué de l'application , auquel tout le monde peut avoir accès à tout moment) faire une légère utilisation de la technique ne fait pas de mal si vous êtes prudent. Notez qu'au lieu de créer une classe Singleton, une alternative est que le délégué d'application crée une seule instance d'une classe de stockage variable et que tout le monde y accède via le délégué ...
Je suppose que je vais devoir m'en tenir à cette technique ... –
Pouvez-vous pas juste en éditeur macro ou quelque chose?
quelque chose comme ça va dans votre tête, après l'interface:
@property (retain) NSString* caption;
alors cela va immediatley dans la mise en œuvre:
@synthesize caption;
Vérifiez ce tutoriel pour plus de détails: http://www.cocoadevcentral.com/d/learn_objectivec/
Vous devez également noter que cela suppose une légende nommée ivar avec NSString * comme type – rpetrich
C'est ce que les variables instantanées, mais qu'en est-il d'autres types (comme statique)? –
@Dennis: Non, vous ne pouvez pas utiliser les propriétés sur les classes, seulement sur les instances d'objets. Pour les variables de classe, vous devez implémenter les méthodes de classe getter et setter manuellement. – PeyloW
Une propriété n'a pas besoin de référencer un ivar. Vous pouvez avoir une propriété dynamique renvoyer une variable statique si vous le voulez vraiment. Utilisez simplement @dynamic et implémentez getter et setter pour référencer les variables statiques de votre fichier d'implémentation.
Sauf que vous auriez besoin d'une instance pour appeler la propriété, au lieu de n'utiliser que le nom de la classe ... –
- 1. Dans ObjectiveC, les pointeurs sont-ils des variables d'instance de classe initialisées à 'nil' ou non?
- 2. Script Xcode pour générer/synthétiser des propriétés
- 3. Java - Classe abstraite pour contenir des variables?
- 4. Existe-t-il un moyen facile d'utiliser les variables d'une classe de base?
- 5. Comment déplacer des variables non statiques de l'interface à l'implémentation dans objectiveC?
- 6. Accès variables et méthodes en dehors des définitions de classe
- 7. importer toutes les variables de classe parente
- 8. Comment attr_accessor de Ruby peut-il produire des variables de classe ou des variables d'instance de classe au lieu de variables d'instance?
- 9. Le moment de l'appel de la méthode de la super classe est-il important dans ObjectiveC?
- 10. Substitution de variables membres de classe en Python (Django/Satchmo)
- 11. Analyseur AMF0 dans ObjectiveC
- 12. Existe-t-il un moyen pour VBA de connaître les variables qui ne sont pas utilisées?
- 13. PHP inclure des fonctions de classe avec des variables
- 14. Y at-il un moyen de définir des variables mysql en utilisant le connecteur JDBC?
- 15. Variables de cache ou de classe?
- 16. Variables de classe thread-safe Ruby
- 17. AS2: charger les variables de classe avec sendandload
- 18. Variables de classe dans les vues de rails?
- 19. Existe-t-il un moyen de modifier une classe dans une méthode de classe en Python?
- 20. tsql: meilleur moyen de convertir des variables en type de chaîne?
- 21. Quelle est la meilleure façon de stocker des variables de classe en PHP?
- 22. Comment puis-je obtenir uniquement des variables de classe?
- 23. Comment synthétiser des sons avec CoreAudio sur iPhone/Mac
- 24. Existe-t-il un moyen rapide de transférer toutes les variables d'un objet identique dans un autre en C#?
- 25. PHP __get et les variables de classe privée
- 26. Existe-t-il un moyen de transmettre toutes les variables définies à un GroovyShell?
- 27. Utilisation de variables parents dans une classe étendue en PHP
- 28. C# Variables de variables membres utilisées par la méthode de la classe de base
- 29. Quel est le meilleur moyen de générer automatiquement des getters et setters pour une classe en php?
- 30. Existe-t-il un moyen d'initialiser un tableau avec des variables non-constantes? (C++)
Qu'entendez-vous par "variables de classe"? ? Objective-C n'a pas ce genre de construction. Il existe des variables d'instance, des variables locales, des variables globales et des variables statiques, mais pas de variables de classe. – Chuck
variables statiques –