2011-01-18 22 views

Odpowiedz

15

Objective-C nie ma zmiennych klasowych, a to, co nazywamy zmienną składową, nazywa się zmienną instancji. Do zmiennych instancji można odwoływać się według nazwy z poziomu metody instancji. A jeśli potrzebujesz zachowania zmiennej klasy, możesz zamiast tego używać statycznego poziomu statycznego.

Oto bardzo szybkie próbki:

Foo.h

@interface Foo : NSObject { 
    NSString *foo; 
} 
@end 

Foo.m

static NSString *bar; 

@implementation Foo 
- (void)foobar { 
    foo = @"test"; // assigns the ivar 
    bar = @"test2"; // assigns the static 
} 
@end 
+0

I będziesz używać go jak: Foo * myFoo = [[ Przydziel Foo] init]; [myFoo foobar]; [wydanie myFoo]; – nacho4d

+0

Dzięki za szybką reakcję, moim pomysłem jest posiadanie klasy NSMutableDictionary, że wszystkie instancje obiektu będą dostępne, czy byłby to poprawny sposób projektowania, czy też czegoś mi brakuje? –

+1

Jeśli potrzebujesz wspólnego słownika, to działa dobrze. Chcesz NSMutableDictionary na poziomie pliku w .m dla NSMutableDictionary i prawdopodobnie będziesz chciał go utworzyć w swojej metodzie '+ initialize' (aby upewnić się, że istnieje przed uzyskaniem dostępu do jakichkolwiek instancji). Jeśli kiedykolwiek zdejmiesz ten obiekt z głównego wątku, powinieneś użyć kolejki wywołania GCD, aby serializować do niego dostęp - inaczej, po prostu śmiało i używaj go jak normalnie. Pamiętaj, że musisz przykleić posiadaną instancję do zmiennej, np. '[[NSMutableDictionary alloc] init]'. I nigdy go nie wypuszczaj (ponieważ sama klasa nigdy nie odchodzi). –

Powiązane problemy