2011-06-20 9 views
7

Duplicar posibles:
Constants in Objective CCómo definir adecuadamente las constantes

Estoy diseñando un controlador y voy a necesitar algunas constantes en su interior (a nivel local, sólo para que el controlador) . En cuanto a algunos ejemplos de código proporcionado por Apple, puedo ver estas líneas:

#import "Constants.h" 

#define kTextFieldWidth 260.0 

static NSString *kSectionTitleKey = @"sectionTitleKey"; 
static NSString *kSourceKey = @"sourceKey"; 
static NSString *kViewKey = @"viewKey"; 

const NSInteger kViewTag = 1; 

Puede alguien explicar a mí lo que la diferencia entre ellos es? ¿Qué estilo debo usar? ¿Dependen del tipo de objeto/valor que les asigne? Significado de uso: static NSString * para cadenas, #define para flotadores y NSInteger para enteros? ¿Cómo haces la elección?

+0

La mejor respuesta [aquí] (http://stackoverflow.com/questions/538996/constants-in-objective-c). –

Respuesta

0

Como Scott y benzado señalaron that is the best way para definir sus valores constantes. Sin embargo, en lo que respecta a las definiciones, es más difícil depurarlo utilizando las definiciones ya que normalmente no se puede ver fácilmente el valor expandido en un depurador. Solo necesitará agregar una declaración externa al archivo de encabezado de su clase si sus intenciones son exponer la variable globalmente. Y lo siguiente que debe recordar es poner la declaración const después del puntero (*) o de lo contrario recibirá advertencias de los descartadores de calificación del puntero en la mayoría de los usos.

+0

gracias, después de jugar y leer algunas explicaciones más que logré entender :) – Hidden

5

La palabra clave #define es una directiva de tiempo de compilación que provoca que el valor definido se inyecte directamente en el código. Es global en todo el programa y todas las bibliotecas vinculadas. De modo que puede eliminarlo de la lista, en función de su deseo de crear una constante para el controlador solo.

La principal diferencia entre estática y const es que variables estáticas se pueden cambiar después de la inicialización, const que nunca podrá pasar. Si desea poder modificar su variable después de la inicialización, entonces debe usar la palabra clave estática .

Espero que ayude.

+0

directo al grano y conciso. Gracias, ¡lo tengo totalmente! :) – Hidden

Cuestiones relacionadas