2012-08-13 10 views

Respuesta

45

Usted debe extern la cadena en la cabecera, y luego definir la cadena de la aplicación.

//ClassA.h 
extern NSString * const kMyConstant; 

//ClassA.m 
NSString * const kMyConstant = @"my constant string"; 

//ClassB.h/m 
#import "ClassA.h" 

... 
    NSLog(@"String Constant: %@", kMyConstant); 
12

Debe eliminar static, que especifica que kMyConstant solo está visible en los archivos vinculados con este.

A continuación, declarar (en contraposición a la definición ) la cadena en la cabecera de la clase A:

extern NSString * const kMyConstant; 

e importación de cabecera que donde quiera que desee utilizar esta cadena. La declaración extern dice que existe un NSString * const por el nombre kMyConstant cuyo almacenamiento se crea en algún otro lugar.

Si la definición estática es ya en el encabezado, debe moverlo a otro lugar (normalmente el archivo de implementación). Las cosas solo se pueden definir una vez, y si intenta importar un archivo que define una variable, obtendrá un error de enlazador.

4

Si es estática, no se puede (eso es lo que la palabra clave estática es para).

Si simplemente se declara como una variable global, sin embargo, se puede hacer algo como esto:

// ClassA.m 

NSString *const str = @"Foo"; 

// ClassB.m 

extern NSString *const str; 

NSLog(@"str is: %@", str); 
Cuestiones relacionadas