2010-07-27 8 views
0

Comment utiliser les variables globales dans le code x (iphone). Par exemple, disons que je veux déclarer un tas de variables (NSStrings) dans le fichier viewcontroller, alors comment pourrais-je y accéder à travers mes différentes classes? Est-ce que quelqu'un peut m'aider?Variables globales?

Répondre

2

Les variables globales sont des variables globales. Vous les utilisez de la même manière que dans n'importe quel programme C, c'est-à-dire qu'ils seront généralement déclarés dans quelque chose comme "globals.h" et importés partout où vous en aurez besoin. Cela dit, il est généralement mal fait de compter sur les globals. Vous pourriez avoir un objet "ApplicationController" qui suit essentiellement l'état global de l'application, mais ses variables devraient être des variables d'instance et soit accédées uniquement en interne, soit via des getters/setters.

Si vous vouliez déclarer un groupe de chaînes dans un seul objet pour être référencé par de nombreux autres objets, vous devriez généralement faire de cet objet un Singleton et lui transmettre une référence à chaque objet qui y aurait accès.

Cependant, vous devez vous demander POURQUOI vous devez faire et s'il n'y a pas une meilleure façon. Je vais miser des dollars sur des beignets, ce n'est pas une bonne raison pour ce que vous essayez de faire. Donnez-nous plus de détails sur ce dont le besoin primordial est que ces chaînes soient globales, et ensuite nous pouvons vous montrer pourquoi elles ne le sont pas. :)

+0

upvote. C'est ainsi que vous déclareriez une variable globale, mais il est très probable qu'il existe une meilleure façon de faire ce que vous essayez de faire. – kubi

+0

Dans chacune de mes classes (20), j'ai une action qui nécessite l'utilisation de (par exemple) 20 chaînes. Chaque classe utilise les mêmes chaînes, et plutôt que de les déclarer dans chaque classe, je me demandais s'il y avait un moyen de les déclarer une seule fois, et ensuite les utiliser dans toutes mes classes. – Roosh

0

Vous pouvez utiliser un singleton s'il n'est pas trop écrasé. Une autre option est NSDefaults. Bien sûr, la façon la plus simple est de définir simplement un extern dans .h

extern NSString * const STR_1; 

et la valeur .m:

NSString * const STR_1 = @"String One"; 
0

vos variables simplement déclarer dans le fichier .h puis importer ce fichier dans n'importe quelle classe que vous voulez l'utiliser. Vous pouvez rendre n'importe quel type d'objet ou de variable global.

0

Si vous déclarez la variable dans des délégués, vous pouvez accéder à ces variables dans d'autres contrôleurs en utilisant les méthodes setter et getter pour y accéder.

Voir Warrior Answer

je l'espère, il vous aidera.