Potrzebuję utworzyć NSString, więc mogę ustawić jego wartość w jednej klasie i uzyskać ją w innej. Jak mogę to zrobić?Global NSString
Odpowiedz
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.
Ustaw jako zmienną globalną.
W jednym pliku w zakresie globalnym:
NSMutableString *myString = @"some funny string";
w drugim pliku:
extern NSMutableString *myString;
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
myślę, że należy użyć singleton. Dobry artykuł, który omawia to Singletons, AppDelegates and top-level data.
Dodatkowe informacje na temat klasy Singleton przy MVC on the iPhone: The Model
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.
Globalny NSString Zmienna dla projektu Kompletny iPhone/Aplikacje
Dla Declare/Definiowanie/Użyj zmienna globalna następujące proste kroki: -
- Tworzenie pliku z NSObject o nazwie „GlobalVars.h i .m”lub jak u chcą
Deklarują swoją globalną zmienną w pliku GlobalVars.h po #import i przed @implementation jak-
extern NSString * Var_name;
zainicjować w GlobalVars.Plik m po #import i przed @implementacja jak-
NSString * Var_name = @ "";
zdefiniować swoją nieruchomość w AppDelegate.h File
@property (nonatomic, zachowują) NSString * var_name;
syntetyzują go w AppDelegate.m File jak-
@synthesize var_name;
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.
- Ostrożnie postępuj zgodnie z tymi krokami i będzie działać Z pewnością.
To działa! Ale musiałem usunąć kroki 4 i 5. Nie wiem dlaczego, ale działałem. –
To świetnie, dzięki za najnowsze! @BrynnerFerreira –
- 1. Global Rotation
- 2. Kakao NSStatusBar Global HotKey
- 3. Namespace PHP Global
- 4. Co to jest global ::?
- 5. Problem Global Hook Keylogger
- 6. Golang Global Variable access
- 7. "global main" w Zgromadzeniu
- 8. Git global hook customization
- 9. C# Project Global AssemblyInfo
- 10. VB.NET 2005 - "Global" Event Handler?
- 11. Node.js Global eval, rzucając ReferenceError
- 12. Global Exception Handling in Jersey
- 13. "UnauthorizedAccessException" - "Global \ .net clr networking"
- 14. SASS Global Variables + Rails 3.1
- 15. Global Variable mason2 in POET
- 16. Jak dołączyć NSString do innego NSString
- 17. Jak uzyskać jedną znak NSString z NSString
- 18. Drukowanie NSString
- 19. NSString parsowania
- 20. Etapy Global [BeforeScenario], [AfterScenario] w SpecFlow
- 21. -Confirm: $ false set as global setting
- 22. Microsoft.SqlServer.Types.dll w pamięci podręcznej Global Assembly Cache?
- 23. narzędzie Viewer for Global Assembly Cache (Viewer)
- 24. C# Hook Global Keyboard Events - .net 4.0
- 25. C# WCF Global Namespaces - Royal Mail
- 26. Erlang - Global Variables .. tak wiem, wiem
- 27. Global Variable - połączenie z bazą danych?
- 28. Skrypt zabezpieczający oparty na Global Group?
- 29. Metoda Call.prototype obiektu na Global Scope
- 30. Swift: Konwertowanie NSNumber na NSString (NSNumber nie jest podtypem NSString)
Czy ciąg musi zostać zmieniony w czasie wykonywania? – MrHen
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