2010-04-27 13 views
5

Necesito crear un NSString, así que puedo establecer su valor en una clase y obtenerla en otra. ¿Cómo puedo hacerlo?Global NSString

+0

¿Alguna vez se necesitará cambiar la cadena durante el tiempo de ejecución? – MrHen

+0

Todas las soluciones para cadenas globales y singletons solo porque la pregunta lo menciona. Es perfectamente posible hacer esto con las propiedades de un objeto si la cuestión es simplemente crear/cambiar una cadena en uso restringido. Notificaciones es otra manera. KVO es otra forma. - Incluso podrías usar la delegación. No hay suficiente información en la pregunta para permitir que se proporcione una respuesta considerada. – Abizern

Respuesta

9

si escribe:

NSString *globalString = @"someString"; 

cualquier lugar fuera de un método, definición de clase, la función , etc ... podrá ser referenciado en cualquier lugar. (Es global!)

El archivo que se acceda al mismo declarará como

externa
extern NSString *globalString; 

Esta declaración significa que se está accediendo desde otro archivo.

5

Haz que sea una variable global.

En un archivo en el ámbito global:

NSMutableString *myString = @"some funny string"; 

En el otro archivo:

extern NSMutableString *myString; 
3

Si está creando una variable global NSString, debería usar probablemente un método de clase.

En MyClass.h:

@interface MyClass : NSObject {} 
    + (NSString *)myGlobalVariable; 
    + (void)setMyGlobalVariable:(NSString *)val; 
@end 

En MyClass.m:

@implementation MyClass 
    NSString *myGlobalVariable = @"default value"; 

    + (NSString *)myGlobalVariable { 
     return myGlobalVariable; 
    } 

    + (void)setMyGlobalVariable:(NSString *)val { 
     myGlobalVariable = val; 
    } 
@end 
2

Recuerde que debe mantener la asignación de memoria y liberar en mente. Esto no es lo mismo que un valor int global; necesita administrar la memoria con cualquier NSObject.

Se producirá una fuga de solo establecer las cadenas globales a nuevas. Acceder mediante hilos creará todo tipo de problemas. Luego hay un apagado donde la última cuerda todavía estará alrededor.

6

Global NSString variable para proyecto completo iPhone/Aplicaciones

Para Declarar/Definir/Utilizar una variable global sigue estos sencillos pasos: -

  1. cree un archivo NSObject con el nombre "GlobalVars.h y .m" o como deseo de u
  2. Declarar la variable global en el archivo GlobalVars.h después de import y antes @implementation como-

    extern NSString * Var_name;

  3. lo inicializa en GlobalVars.m archivo después de import y antes @implementation como-

    NSString * Var_name = @ "";

  4. definir su propiedad en AppDelegate.h archivo

    @property (no atómica, retener) NSString * NOMBRE_VAR;

  5. sintetizarlo en AppDelegate.m Archivo como-

    @synthesize NOMBRE_VAR;

  6. Ahora, donde quiera usar esta variable (en el archivo .m) solo importe/inclue el archivo GlobalVars.h en todos los archivos .h, y puede acceder fácilmente a esta variable como Global.

  7. Siga cuidadosamente estos pasos y funcionará con seguridad.
+0

¡Funciona! Pero necesitaba eliminar los pasos 4 y 5. No sé por qué, pero funcionó. –

+0

¡Eso es genial, gracias por estar al día! @BrynnerFerreira –