我有一个基类,其中定义了一些类似于:
的变量@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 ...
还有其他人看过这种病症吗?
答案 0 :(得分:1)
如果您的编译器设置为gcc,则存在一个错误:定义没有相应ivar定义的@property的子类(这是完全合法的)隐藏了任何超类ivars。
解决方案:将编译器切换到LLVM。
(如果由于某种原因该解决方案不可行,则回退就是您发现的:使用消息而不是直接引用。)