私は2つのサブクラスを持っています.1つはカスタマイズが多く、Fooは1つのメソッドしかオーバーライドしない別のサブクラスです。追加の変数が必要な場合は、Barとします。1つの.hと.mのObjective-C複数のクラス定義
バーはFooの変数の1つになるので、2つのファイル(Barの場合は.mと.h)を残さないようにするため、Fooの.hと.mファイルにBarを実装して実装したい。
私の最善の努力は、いくつかのコンパイラエラーをもたらします。
#import "Foo.h"
@implementation Foo
@synthesize barVariable;
-(void) fooMethod{
//do foo related things
}
@end
@implementation Bar
- (void)barSuperClassMethodIWantToOverride{
}
@end
私は物事のこのタイプは、一般的にひんしゅくを買うことになることを認識し、私はそれが適切だと感じ:.mファイルがどのように見える
#import <UIKit/UIKit.h>
@interface Foo : FooSuperClass {
Bar *barVariable;
}
@property (nonatomic, retain) Bar *barVariable;
-(void) fooMethod;
@end
@interface Bar : BarSuperClass {
}
@end
:
.hファイルは次のようになります私の状況では。私が得る最初のエラーは、 "barの前に予期される指定子 - 修飾子リスト"です。
私は間違っていますが、1つのファイルに複数の宣言/定義を入れることは可能でしょうか。
'@ class'指示文を使うほうがよい場合がよくあります。たとえば、 'Foo'型のインスタンス変数が' Bar'で宣言されているとどうなりますか? –