Мне нужна помощь в понимании того, как использовать переменную класса/члена из метода экземпляра в Objective-C.Objective-C, переменные-члены и переменные класса
Любой сниппл/пример высоко ценится.
Спасибо.
Мне нужна помощь в понимании того, как использовать переменную класса/члена из метода экземпляра в Objective-C.Objective-C, переменные-члены и переменные класса
Любой сниппл/пример высоко ценится.
Спасибо.
Объектив-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
И вы будете использовать его как: Foo * MYFOO = [[ Foo alloc] init]; [myFoo foobar]; [выпуск myFoo]; – nacho4d
Спасибо за вашу оперативную реакцию, моя идея состоит в том, чтобы иметь класс NSMutableDictionary, который все экземпляры объекта разделяют, будет ли это правильным способом дизайна или им я чего-то не хватает? –
Если вам нужен общий словарь, это работает нормально. Вам понадобится статический файл уровня в .m для NSMutableDictionary, и вы, скорее всего, захотите создать его в своем методе '+ initialize' (чтобы убедиться, что он существует до того, как все экземпляры обратятся к нему). Если вам когда-либо понадобится коснуться этого объекта из основного потока, вы должны использовать очередь отправки GCD для сериализации доступа к нему - иначе просто перейдите и используйте его, как обычно. Обратите внимание, что вам нужно будет вставить принадлежащий ему экземпляр в переменную, например. '[[NSMutableDictionary alloc] init]'. И никогда не выпускайте его (поскольку сам класс никогда не уходит). –