J'ai un compteur que j'utilise pour obtenir un objet à cet index de compteurs et j'ai besoin d'y accéder dans une autre classe.Variables globales dans l'objectif C
Comment les variables statiques sont-elles déclarées en Objective C?
J'ai un compteur que j'utilise pour obtenir un objet à cet index de compteurs et j'ai besoin d'y accéder dans une autre classe.Variables globales dans l'objectif C
Comment les variables statiques sont-elles déclarées en Objective C?
Salut alJaree,
Vous déclarez statique variable dans la mise en œuvre de votre classe et permettre l'accès à celui-ci grâce à des accesseurs statiques:
some_class.h:
@interface SomeClass {...}
+ (int)counter;
@end
some_class.m:
@implementation SomeClass
static int counter;
+ (int)counter { return counter; }
@end
Plutôt que de le rendre global, donner un accès de classe au comptoir de l'autre classe, ou les deux classes partagent une troisième classe qui possède le compteur:
ClassA.h:
@interface ClassA {
int counter;
}
@property (nonatomic, readonly) int counter;
ClassA.m
@implementation ClassA
@synthesize counter;
ClassB.h:
#import "ClassA.h"
@interface ClassB {
ClassA *a;
}
ClassB.m:
@implementation ClassB
- (void)foo {
int c = a.counter;
}
Merci, mais comment l'utiliser dans une autre classe? Je viens d'avoir une erreur "non déclarée". – jarryd
Vous devez '# importer 'une_classe.h" 'dans chaque fichier d'implémentation qui utilise le compteur. – Paul
@alJaree C'est plus ou moins l '"équivalent" d'une classe avec un membre statique public dans java. Comme Paul l'indique correctement, vous devez l'importer et vous y accédez via [compteur SomeClass]. L'alternative serait de déclarer une variable globale dans un fichier d'en-tête (comme on le ferait en c), mais Marcelo a déjà suggéré d'utiliser cette méthode et je pense que c'est plus propre d'un point de vue OO. –