2010-04-27 16 views
5

Potrzebuję utworzyć NSString, więc mogę ustawić jego wartość w jednej klasie i uzyskać ją w innej. Jak mogę to zrobić?Global NSString

+0

Czy ciąg musi zostać zmieniony w czasie wykonywania? – MrHen

+0

Wszystkie rozwiązania dla łańcuchów globalnych i singletonów tylko dlatego, że pytanie to wspomniało. Jest to całkowicie możliwe z właściwościami obiektu, jeśli chodzi o tworzenie/zmianę ciągu znaków w ograniczonym użyciu. Powiadomienia to inny sposób. KVO to inny sposób. - Możesz nawet użyć delegacji. W pytaniu jest za mało informacji, aby umożliwić udzielenie rozważnej odpowiedzi. – Abizern

Odpowiedz

9

jeśli piszesz:

NSString *globalString = @"someString"; 

gdziekolwiek poza metody, definicja klasy, funkcji , etc ... będzie można się do niego odwoływać w dowolnym miejscu. (Jest to globalny!)

Plik że dostęp będzie zadeklarować ją jako zewnętrzny

extern NSString *globalString; 

Ta deklaracja oznacza, że ​​jest on dostępny z innego pliku.

5

Ustaw jako zmienną globalną.

W jednym pliku w zakresie globalnym:

NSMutableString *myString = @"some funny string"; 

w drugim pliku:

extern NSMutableString *myString; 
3

Jeśli tworzysz globalną zmienną NSString, powinieneś użyć metody klasy.

W MyClass.h:

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

W MyClass.m:

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

    + (NSString *)myGlobalVariable { 
     return myGlobalVariable; 
    } 

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

Pamiętaj, że należy zachować alokacji pamięci i uwalniając w umyśle. To nie jest to samo, co globalna wartość int - musisz zarządzać pamięcią dowolnym obiektem NSObject.

Wielokrotnie po prostu ustawienie globalnego na nowe ciągi wycieknie. Uzyskanie dostępu za pośrednictwem wątków spowoduje powstanie wielu problemów. Następnie następuje wyłączenie, gdzie ostatni ciąg będzie nadal w pobliżu.

6

Globalny NSString Zmienna dla projektu Kompletny iPhone/Aplikacje

Dla Declare/Definiowanie/Użyj zmienna globalna następujące proste kroki: -

  1. Tworzenie pliku z NSObject o nazwie „GlobalVars.h i .m”lub jak u chcą
  2. Deklarują swoją globalną zmienną w pliku GlobalVars.h po #import i przed @implementation jak-

    extern NSString * Var_name;

  3. zainicjować w GlobalVars.Plik m po #import i przed @implementacja jak-

    NSString * Var_name = @ "";

  4. zdefiniować swoją nieruchomość w AppDelegate.h File

    @property (nonatomic, zachowują) NSString * var_name;

  5. syntetyzują go w AppDelegate.m File jak-

    @synthesize var_name;

  6. Teraz, gdy chcesz użyć tej zmiennej (w pliku .m), po prostu importuj/przyklej plik GlobalVars.h do wszystkich plików .h, i możesz łatwo uzyskać dostęp do tej zmiennej jako Globalnie.

  7. Ostrożnie postępuj zgodnie z tymi krokami i będzie działać Z pewnością.
+0

To działa! Ale musiałem usunąć kroki 4 i 5. Nie wiem dlaczego, ale działałem. –

+0

To świetnie, dzięki za najnowsze! @BrynnerFerreira –