2009-02-16 9 views
14

Si je déclare une constante de chaîne comme ceci:entier constantes

Vous devez créer un fichier d'en-tête comme

// Constants.h 
extern NSString * const MyFirstConstant; 
extern NSString * const MySecondConstant; 
//etc. 

Vous pouvez inclure ce fichier dans chaque fichier qui utilise les constantes ou dans le pré-compilé en-tête pour le projet.

Vous définissez ces constantes dans un fichier .m comme

// Constants.m 

NSString * const MyFirstConstant = @"FirstConstant"; 
NSString * const MySecondConstant = @"SecondConstant"; 

Que dois-je faire pour définir des constantes entières?

Répondre

37

Remplacez NSString * par NSInteger.

Cela est vrai pour tout type de constante, qu'il s'agisse d'une primitive telle que int/float ou d'une classe telle que NSString ou NSInteger.

La seule chose à prendre en compte est de savoir si vous désirez une constante ou un pointeur vers une constante (comme withNSString), et comment il est initialisé dans le fichier .m

exemple entier:

// constants.h 
extern NSInteger const MyIntegerConstant; 

// constants.m 
NSInteger const MyIntegerConstant = 666; 

(note: pour la raison pour laquelle NSInteger au lieu de "int" régulière, voir this post)

exemple de classe:

// constants.h 
extern MyClass* const MyClassConstant; 

// constants.m 
MyClass* const MyClassConstant= [[MyClass alloc] initWith: paramOne and:paramTwo]; 
+0

Merci andrew - Cette classe serait-elle désaffectée? –

+0

Ce ne serait pas, sa mémoire serait nettoyée lorsque le programme se termine. Si vous souhaitez avoir un contrôle manuel dessus, vous pouvez ajouter des fonctions initializeConsts/releaseConsts au début/à la fin de votre programme. –

+1

Merci andy - J'utilise le code ci-dessus dans mon add et j'obtiens l'erreur de compilation dans mes instructions Switch "MyIntegerConstant" ne correspond pas à un entier –