두 개의 하위 클래스가 있습니다. 하나는 커스터마이징이 많은 클래스이고 Foo는 하나의 메서드 만 재정의해야하는 다른 하위 클래스이며 다른 하나는 하위 클래스입니다. 추가 변수가 필요 없으면 Bar라고 부릅니다.하나의 .h 및 .m의 Objective-C 다중 클래스 정의
바는 Foo의 변수 중 하나가 될 것이므로, 2 개의 파일 (bar는 .m 및 .h)을 계속 사용하지 않도록하려면 Foo의 .h 및 .m 파일에서 Bar를 구현하고 구현하고 싶습니다. .
최선의 노력으로 여러 가지 컴파일러 오류가 발생합니다. 같은
#import <UIKit/UIKit.h>
@interface Foo : FooSuperClass {
Bar *barVariable;
}
@property (nonatomic, retain) Bar *barVariable;
-(void) fooMethod;
@end
@interface Bar : BarSuperClass {
}
@end
하는 .m 파일을 찾습니다 : 같은
.H 파일이 보인다 내가 사물의 유형은 일반적으로 눈살을 찌푸리게 될 것을 깨닫게
#import "Foo.h"
@implementation Foo
@synthesize barVariable;
-(void) fooMethod{
//do foo related things
}
@end
@implementation Bar
- (void)barSuperClassMethodIWantToOverride{
}
@end
,하지만 난 그게 적절한 느낀다 내 상황에서. 내가 얻는 첫 번째 오류는 "bar 이전의 예상 지정자 - 한정자 목록"입니다.
내가 잘못 했으므로 하나의 파일에 여러 개의 선언/정의를 가질 수 있다고 확신합니다.
'@ class' 지시어를 사용하는 것이 더 나을 때가 있습니다. 예를 들어, 'Bar'에 선언 된'Foo' 유형의 인스턴스 변수를 가지고 있다면 어떻게 될까요? –