Je veux stocker un nombre en tant que variable globale. Quelle syntaxe dois-je utiliser et comment d’autres parties de mon application peuvent-elles accéder à cette variable?
Pour une variable globale standard (non persistante lorsque l'application est terminée et redémarrée), ajoutez ceci dans un fichier d'en-tête (* .h) de votre choix:
extern NSInteger MYGlobalVariable;
Ensuite, mettez ceci dans le fichier d'implémentation; (* .m, * .c, * .cpp) :
MYGlobalVariable = 0; // Or any other default value.
C'est ainsi que vous faites une variable globale pain et beurre.
Vous voudrez probablement utiliser NSUserDefaults pour ceci:
De n'importe où dans votre code, vous pouvez définir une valeur pour une clé:
int userAge = 21; // Just an example
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:[NSNumber numberWithInt:userAge] forKey:@"age"];
[standardUserDefaults synchronize];
}
Et récupérez-le de n'importe quel autre endroit:
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSNumber *age = nil;
if (standardUserDefaults)
age = [standardUserDefaults objectForKey:@"age"];
userAge = [age intValue]
Vous pouvez également définir une valeur initiale:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary
dictionaryWithObject:[NSNumber numberWithInt:13] forKey:@"age"];
[defaults registerDefaults:appDefaults];
De plus, si vous avez des données complexes, vous pouvez créer une classe wrapper avec des setters et des getters.
Définissez la variable dans le fichier AppDelegate.h. Créer une propriété dans un fichier .h
@property (retain, nonatomic) NSString *str;
Puis synthétisez dans le fichier AppDelegate.m;
@synthesize str;
Définissez ensuite une variable dans votre fichier préfixe.pch de projet
#define DELEGATE ((AppDelegate*)[[UIApplication sharedApplication]delegate])
Utilisez la valeur n'importe où dans votre projet
AppDelegate *a = DELEGATE;
a.str = @"value";
NSLog(@"value of variable str : %@",a.str);
Pour créer une variable visible par l’ensemble des fichiers dans Objective C
par exemple, vous voulez définir votre URL de base une fois et dans chaque classe, vous ajoutez des chaînes supplémentaires,
allez dans le fichier main.m, car c'est à cet endroit que toute l'application le verra . puis en dehors de la fonction principale, mettez votre URL de base
NSString *baseurl = @"staging.nabdanet.com";
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
et quand vous voulez accéder à ces cours, voici ce que vous ferez,
SomeClass.m
extern NSString *baseurl;
avec le même nom dans les deux;)
Pour les vars persistants, utilisez NSUserDefaults. Ceci est écrit sur un fichier dans le sandbox de l'application . Pour les sessions (non persistantes), j'utilise une classe singleton avec une propriété NSMutableDictionary pour stocker les variables.
Pour déclarer une variable globale dans objective-C ou Swift, il vous suffit de la déclarer en dehors du champ de toute classe/interface.
#import "headerFile1.h"
#import "headerFile2.h"
BOOL isTrue = true;
int x = 1;
@interface exampleInterface (){
...
}
@end
@implementation exampleClass
...
isTrue= false; // can be used in the same way anyplace in your code
x=3; // anyplace means anyplace, even from other controllers
@end
import UIKit
var x=45;
class SomeClass {
...
x=0; // This is also available from anyplace in your project
...
}