2009-02-16 22 views
14

Si declara una constante de cadena, así:enteros constantes de

Debe crear un archivo de cabecera como

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

Puede incluir este archivo en cada archivo que utiliza las constantes o en la pre-compilados encabezado para el proyecto.

Para definir estas constantes en un archivo .m como

// Constants.m 

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

¿Qué hago para definir constantes enteras?

Respuesta

37

Reemplace NSString * con NSInteger.

Esto es cierto para cualquier tipo de constante, ya sea una primitiva como int/float, o una clase como NSString o NSInteger.

La única cosa a tener en cuenta es si usted desea una constante o un puntero a una constante (como withNSString), y cómo se inicializa en el archivo .m

ejemplo Entero:

// constants.h 
extern NSInteger const MyIntegerConstant; 

// constants.m 
NSInteger const MyIntegerConstant = 666; 

(Nota: para la razón por la NSInteger en lugar de sólo "int" regular, ver this post) ejemplo

Clase:

// constants.h 
extern MyClass* const MyClassConstant; 

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

Gracias andrew - ¿Esta clase sería desasignada? –

+0

No lo sería, su memoria se limpiaría cuando el programa salga. Si desea tener control manual sobre esto, puede agregar funciones initializeConsts/releasConsts al comienzo/final de su programa –

+1

Gracias andy - Estoy usando el código anterior en mi complemento y estoy obteniendo el error de compilación en mis declaraciones Switch : "MyIntegerConstant" no equivale a un número entero –