参考Objective-C超类变量

时间:2011-09-19 23:39:38

标签: objective-c

我有一个基类,其中定义了一些类似于:

的变量
@interface Foo : NSObject {
    SomeObject *baz;
}

@implementation Foo
@synthesize baz;

// ...

@end

@interface Bar : Foo
@end

@implementation Bar

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

实际上我有一个包含大约30个子类的基类。

问题在于,在大多数情况下,我可以简单地将基类'变量简称为baz但在几个子类中我必须明确地将其引用为self.baz ...

还有其他人看过这种病症吗?

1 个答案:

答案 0 :(得分:1)

如果您的编译器设置为gcc,则存在一个错误:定义没有相应ivar定义的@property的子类(这是完全合法的)隐藏了任何超类ivars。

解决方案:将编译器切换到LLVM。

(如果由于某种原因该解决方案不可行,则回退就是您发现的:使用消息而不是直接引用。)