Ho bisogno di creare una NSString, così posso impostare il suo valore in una classe e ottenerla in un'altra. Come posso farlo?Global NSString
risposta
se si scrive:
NSString *globalString = @"someString";
ovunque al di fuori di un metodo, definizione di classe, la funzione , ecc ... sarà in grado di essere referenziato ovunque. (È globale!)
Il file che vi accede la dichiareremo come esterno
extern NSString *globalString;
Questa dichiarazione significa che esso si accede da un altro file.
Farlo una variabile globale.
In un unico file di portata globale:
NSMutableString *myString = @"some funny string";
nell'altro file:
extern NSMutableString *myString;
Se si sta creando una variabile globale NSString
, è consigliabile utilizzare probabilmente un metodo di classe.
In MyClass.h
:
@interface MyClass : NSObject {}
+ (NSString *)myGlobalVariable;
+ (void)setMyGlobalVariable:(NSString *)val;
@end
In MyClass.m
:
@implementation MyClass
NSString *myGlobalVariable = @"default value";
+ (NSString *)myGlobalVariable {
return myGlobalVariable;
}
+ (void)setMyGlobalVariable:(NSString *)val {
myGlobalVariable = val;
}
@end
Credo che si dovrebbe utilizzare un Singleton. Un buon articolo che discute questo è Singletons, AppDelegates and top-level data.
Ulteriori informazioni su una classe Singleton è a MVC on the iPhone: The Model
ricordare che si dovrebbe tenere l'allocazione di memoria e liberando in mente. Questa non è la stessa cosa di un valore int globale: è necessario gestire la memoria con qualsiasi NSObject.
Ripetutamente si verificherà solo l'impostazione globale delle nuove stringhe. L'accesso tramite thread creerà tutti i tipi di problemi. Poi c'è l'arresto in cui l'ultima stringa sarà ancora in giro.
globale NSString variabile per progetto completo iPhone/Applicazioni
Per Declare/Definire/utilizzare una variabile globale seguire questi semplici passaggi: -
- creare un file NSObject con il nome di "GlobalVars.h e .m" o come u desiderio
dichiarare la variabile globale nel file di GlobalVars.h dopo #import e prima @implementation come-
NSString esterno * Nome_var;
inizializzarlo in GlobalVars.m file dopo #import e prima @implementation come-
NSString * Var_name = @ "";
Definire la proprietà in AppDelegate.h file
@property (nonatomic, mantenere) NSString * nome_var;
sintetizzarlo in AppDelegate.m file come-
@synthesize nome_var;
Ora dove si desidera utilizzare questa variabile (in .m file) è sufficiente importare/includere il file GlobalVars.h in tutti i file .h e si può accedere facilmente a questa variabile come Globalmente.
- Seguire attentamente questi passaggi e funzionerà Sicuramente.
Funziona! Ma avevo bisogno di rimuovere i passaggi 4 e 5. Non so perché, ma ha funzionato. –
È grandioso, grazie per l'ultima! @BrynnerFerreira –
È necessario modificare la stringa durante il runtime? – MrHen
Tutte le soluzioni per stringhe e singleton globali solo perché la domanda lo menzionava. È perfettamente possibile farlo con le proprietà di un oggetto se la domanda riguarda solo la creazione/modifica di una stringa in un uso limitato. Le notifiche sono un altro modo. KVO è un altro modo. - Potresti anche usare la delega. Non ci sono abbastanza informazioni nella domanda per consentire di fornire una risposta ponderata. – Abizern