2010-04-27 4 views
5

J'ai besoin de créer un NSString, donc je peux définir sa valeur dans une classe et l'obtenir dans une autre. Comment puis-je le faire?Global NSString

+0

La chaîne devra-t-elle être modifiée au cours de l'exécution? – MrHen

+0

Toutes les solutions pour les chaînes globales et singletons juste parce que la question l'a mentionné. Il est parfaitement possible de faire cela avec les propriétés d'un objet si la question est juste de créer/modifier une chaîne en usage restreint. Les notifications sont une autre façon. Le KVO est un autre moyen. - Vous pourriez même utiliser la délégation. Il n'y a pas assez d'informations dans la question pour permettre qu'une réponse réfléchie soit fournie. – Abizern

Répondre

9

si vous écrivez:

NSString *globalString = @"someString"; 

partout en dehors d'une méthode, la définition de la classe, la fonction , etc ... il pourra être référencé n'importe où. (Elle est mondiale!)

Le fichier qui y accède déclarera comme externe

extern NSString *globalString; 

Cette déclaration signifie qu'il est accessible à partir d'un autre fichier.

5

En faire une variable globale.

Dans un dossier dans le contexte global:

NSMutableString *myString = @"some funny string"; 

Dans l'autre fichier:

extern NSMutableString *myString; 
3

Si vous créez une variable globale NSString, vous devez probablement utiliser une méthode de classe.

En MyClass.h:

@interface MyClass : NSObject {} 
    + (NSString *)myGlobalVariable; 
    + (void)setMyGlobalVariable:(NSString *)val; 
@end 

En MyClass.m:

@implementation MyClass 
    NSString *myGlobalVariable = @"default value"; 

    + (NSString *)myGlobalVariable { 
     return myGlobalVariable; 
    } 

    + (void)setMyGlobalVariable:(NSString *)val { 
     myGlobalVariable = val; 
    } 
@end 
2

Rappelez-vous que vous devez garder l'allocation de mémoire et de libérer l'esprit. Ce n'est pas la même chose qu'une valeur int globale - vous devez gérer la mémoire avec n'importe quel NSObject.

De manière répétée, il suffit de régler le global sur de nouvelles chaînes. L'accès à travers les threads créera toutes sortes de problèmes. Ensuite, il y a l'arrêt où la dernière chaîne sera toujours là.

6

mondiale NSString variable pour iPhone complète du projet/Apps

Pour Declare/Définir/utiliser une variable globale suivre les étapes suivantes: -

  1. Créer un fichier avec NSObject nommé « GlobalVars.h .m » ou u souhaitent
  2. Déclarez votre variable globale dans le fichier GlobalVars.h après #import et avant @implementation comme-

    extern NSString * Var_name;

  3. initialisez-le dans GlobalVars.m fichier après #import et avant @implementation like-

    NSString * Var_name = @ "";

  4. Définir sa propriété dans AppDelegate.h Fichier

    @property (nonatomic, conserver) NSString * VAR_NAME;

  5. synthétisent dans AppDelegate.m fichier comme-

    @synthesize VAR_NAME; Maintenant, où vous voulez utiliser cette variable (dans le fichier .m), il suffit d'importer/inclure le fichier GlobalVars.h dans tous les fichiers .h, et vous pouvez accéder facilement à cette variable comme Globally.

  6. Suivez attentivement ces étapes et cela fonctionnera sûrement.
+0

Ca marche! Mais j'avais besoin de retirer les étapes 4 et 5. Je ne sais pas pourquoi, mais j'ai travaillé. –

+0

C'est super, merci pour la dernière! @BrynnerFerreira –