Necesito crear un NSString, así que puedo establecer su valor en una clase y obtenerla en otra. ¿Cómo puedo hacerlo?Global NSString
Respuesta
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
externaextern NSString *globalString;
Esta declaración significa que se está accediendo desde otro archivo.
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;
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
Creo que debería utilizar un producto único. Un buen artículo que discute esto es Singletons, AppDelegates and top-level data.
información adicional sobre una clase Singleton está en MVC on the iPhone: The Model
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.
Global NSString variable para proyecto completo iPhone/Aplicaciones
Para Declarar/Definir/Utilizar una variable global sigue estos sencillos pasos: -
- cree un archivo NSObject con el nombre "GlobalVars.h y .m" o como deseo de u
Declarar la variable global en el archivo GlobalVars.h después de import y antes @implementation como-
extern NSString * Var_name;
lo inicializa en GlobalVars.m archivo después de import y antes @implementation como-
NSString * Var_name = @ "";
definir su propiedad en AppDelegate.h archivo
@property (no atómica, retener) NSString * NOMBRE_VAR;
sintetizarlo en AppDelegate.m Archivo como-
@synthesize NOMBRE_VAR;
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.
- Siga cuidadosamente estos pasos y funcionará con seguridad.
¡Funciona! Pero necesitaba eliminar los pasos 4 y 5. No sé por qué, pero funcionó. –
¡Eso es genial, gracias por estar al día! @BrynnerFerreira –
- 1. Cómo # #define un NSString para uso global?
- 2. Cómo agregar un NSString a otro NSString
- 3. Objetivo C const NSString * vs NSString * const
- 4. anteponer NSString?
- 5. NSString stringWithFormat
- 6. NSString análisis
- 7. Objetivo C: variable estática y global?
- 8. Ámbito global vs espacio de nombres global
- 9. Diferencia entre 'global' y 'estática global'
- 10. iPhone - Comparar NSString nil con otro valor NSString devuelve NSOrderedSame
- 11. cómo quitar caracteres de NSString después NSString específica
- 12. uso de NSString estático frente a constantes NSString en línea
- 13. Cómo obtener un solo carácter NSString de un NSString
- 14. - [NSString stringByAppendingPathComponent:] o simplemente - [NSString stringByAppendingFormat:] para NSStrings para NSURLs?
- 15. Cómo declarar y utilizar NSString constantes globales
- 16. NSString a NSUInteger
- 17. Cocoa NSString explotar
- 18. NSString a NSDate
- 19. NSString: isEqual vs. isEqualToString
- 20. Detectar URL en NSString
- 21. NSString al número doble
- 22. Búsqueda NSString en NSSet
- 23. NSString con Instancia variable
- 24. NSString isEqualToString: no funciona
- 25. NSString character position
- 26. Eliminar http: // de NSString
- 27. iOS JSON NSString Parse
- 28. NSString (hex) a bytes
- 29. BOOL a NSString
- 30. Imprimir un NSString
¿Alguna vez se necesitará cambiar la cadena durante el tiempo de ejecución? – MrHen
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