我有两个子类,一个有很多自定义内容,我们称之为Foo,另一个子类只需要覆盖1个方法,而且不需要任何额外的变量,我们称之为Bar。
Bar将是Foo的变量之一,因此为了避免使用2个以上的文件(.m和.h文件),我想在Foo的.h和.m文件中接口并实现Bar。
我的最佳努力却导致了几个编译器错误。
.h文件如下:
#import <UIKit/UIKit.h>
@interface Foo : FooSuperClass {
Bar *barVariable;
}
@property (nonatomic, retain) Bar *barVariable;
-(void) fooMethod;
@end
@interface Bar : BarSuperClass {
}
@end
.m文件长这样:
#import "Foo.h"
@implementation Foo
@synthesize barVariable;
-(void) fooMethod{
//do foo related things
}
@end
@implementation Bar
- (void)barSuperClassMethodIWantToOverride{
}
@end
我意识到这种做法通常会受到谴责,但我认为在我的情况下是适当的。我得到的第一个错误是“在 Bar 之前需要指定符号限定符列表”。
我做错了什么?我相当确定在单个文件中可以有多个声明/定义。
@class
指令。比如,如果在Bar
中声明了一个类型为Foo
的实例变量,那么会发生什么? - Alex Rozanski