Ссылаясь на переменную суперкласса Objective-C - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть базовый класс с некоторыми определенными переменными, который выглядит примерно так:

@interface Foo : NSObject {
    SomeObject *baz;
}

@implementation Foo
@synthesize baz;

// ...

@end

@interface Bar : Foo
@end

@implementation Bar

-(void)someMethod {
    NSString *foostr = [NSString stringWithFormat:"%@", baz];
}

У меня фактически есть базовый класс с около 30 подклассами.

Проблема в том, что в большинствея могу ссылаться на переменную базового класса bad просто как baz, но в нескольких подклассах я должен явно ссылаться на bad как self.baz ...

Кто-нибудь еще видел эту патологию?

1 Ответ

1 голос
/ 20 сентября 2011

Если ваш компилятор установлен в gcc, есть ошибка: подкласс, который определяет @property без соответствующего определения ivar (что совершенно законно), скрывает все икары суперкласса.

Решение: переключите ваш компилятор на LLVM.

(Если это решение по какой-то причине неосуществимо, вы обнаружили запасной вариант: используйте обмен сообщениями вместо прямой ссылки.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...