2011-01-18 4 views

ответ

15

Объектив-C не имеет переменных класса, а то, что вы называете переменной-членом, называется переменной экземпляра. Переменные экземпляра могут ссылаться по имени из метода экземпляра. И если вам нужно поведение переменной класса, вы можете вместо этого использовать статический уровень.

Вот очень быстрый пример:

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

И вы будете использовать его как: Foo * MYFOO = [[ Foo alloc] init]; [myFoo foobar]; [выпуск myFoo]; – nacho4d

+0

Спасибо за вашу оперативную реакцию, моя идея состоит в том, чтобы иметь класс NSMutableDictionary, который все экземпляры объекта разделяют, будет ли это правильным способом дизайна или им я чего-то не хватает? –

+1

Если вам нужен общий словарь, это работает нормально. Вам понадобится статический файл уровня в .m для NSMutableDictionary, и вы, скорее всего, захотите создать его в своем методе '+ initialize' (чтобы убедиться, что он существует до того, как все экземпляры обратятся к нему). Если вам когда-либо понадобится коснуться этого объекта из основного потока, вы должны использовать очередь отправки GCD для сериализации доступа к нему - иначе просто перейдите и используйте его, как обычно. Обратите внимание, что вам нужно будет вставить принадлежащий ему экземпляр в переменную, например. '[[NSMutableDictionary alloc] init]'. И никогда не выпускайте его (поскольку сам класс никогда не уходит). –

Смежные вопросы