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
Répondre
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.
En faire une variable globale.
Dans un dossier dans le contexte global:
NSMutableString *myString = @"some funny string";
Dans l'autre fichier:
extern NSMutableString *myString;
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
Je pense que vous devriez utiliser un singleton. Un bon article qui traite c'est Singletons, AppDelegates and top-level data.
Informations complémentaires sur une classe singleton est à MVC on the iPhone: The Model
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à.
mondiale NSString variable pour iPhone complète du projet/Apps
Pour Declare/Définir/utiliser une variable globale suivre les étapes suivantes: -
- Créer un fichier avec NSObject nommé « GlobalVars.h .m » ou u souhaitent
Déclarez votre variable globale dans le fichier GlobalVars.h après #import et avant @implementation comme-
extern NSString * Var_name;
initialisez-le dans GlobalVars.m fichier après #import et avant @implementation like-
NSString * Var_name = @ "";
Définir sa propriété dans AppDelegate.h Fichier
@property (nonatomic, conserver) NSString * VAR_NAME;
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.
- Suivez attentivement ces étapes et cela fonctionnera sûrement.
Ca marche! Mais j'avais besoin de retirer les étapes 4 et 5. Je ne sais pas pourquoi, mais j'ai travaillé. –
C'est super, merci pour la dernière! @BrynnerFerreira –
- 1. NSString * string = @ "someString" vs NSString * string = [[alloc NSString] initWithFormat @ "% @", string]
- 2. Global utf8_encode
- 3. NSString - doubleValue retourne NaN d'un NSString viable
- 4. NSString drawAtPoint Crash sur l'iPhone (NSString drawAtPoint)
- 5. préfixer NSString?
- 6. Fonction NSString
- 7. NSString Retour?
- 8. Valider NSString
- 9. Autorelease NSString
- 10. NSString stringWithFormat
- 11. couleur NSString
- 12. Déclaration d'un global dans un fichier d'en-tête global?
- 13. Delphi: Attribution d'enregistrement global - enregistrement global ne change pas
- 14. Matériel global OnKeyPress
- 15. global var dans JS
- 16. Tkinter Global Binding
- 17. Global Hook Keylogger problème
- 18. Global Color Scheme/Skin
- 19. tableau global en php
- 20. Global "method_missing" en PHP?
- 21. Rails global enums?
- 22. PHP: "Global" Inclure
- 23. Cocoa NSStatusBar Global HotKey
- 24. écrivant global écouteur
- 25. Modèle global Html.EditorFor?
- 26. Objet global dans ActionScript
- 27. Appel d'un tableau global
- 28. Comportement WCF global (.asax)
- 29. tableau global Mutable
- 30. wxPython global counter
La chaîne devra-t-elle être modifiée au cours de l'exécution? – MrHen
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