할 수 있는 상속@속성을 만족하지 않는 <protocol> @설턴트를 제공합니다.
-
18-09-2020 - |
문제
나는 프로토콜:
@protocol Gadget <NSObject>
@property (readonly) UIView *view;
- (void) attachViewToParent:(UIView *)parentView;
@end
그리고"추상적인"기본 클래스로 구현으로(getter,하지 않음)의 -(UIView *)view
:
// Base functionality
@interface AbstractGadget : NSObject {
UIView *view;
}
@property (readonly) UIView *view;
@end
하지만 내가를 구현하는 Gadget
프로토콜에 하위 클래스 AbstractGadget
, 다음과 같이:
// Concrete
@interface BlueGadget : AbstractGadget <Gadget> {
}
- (void) attachViewToParent:(UIView *)parentView;
@end
@implementation BlueGadget
- (void) attachViewToParent:(UIView *)parentView {
//...
}
@end
나는 컴파일러 오류가 말하는 나에게"경고:산 보'에 필요한 메소드'-보'정의할." 나이 멀리 가 사용 @dynamic
, 또는 추가하여 스텁 방법:
- (UIView *) view {
return [super view];
}
그러나 나는 단지 알고 싶다면 나는 뭔가가 지원되지 않는 뭔가가 될 수 없을 경우,또는 그 제한사항/버그에서 컴파일러가?
해결책
을 선언하여 제공으로@동적을 말하고 있는 컴파일러 제공 getter(및 setter 필요한 경우)에 구현된 다른 곳에서(잠재적 런타임).이 소리는 다음과 같은 완벽하게 합리적인 사용한 경우다.
보 문서 자세한 내용은.
다른 팁
또한 이 정확한 문제입니다.이것은 하나의 상황@동적이 있습니다.
여기에는 규칙에 대한 변수산 및 합성하는 것을 목적으:
이 있는 경우 속성이 있어야 합@합성 또는 선언@역동적이고 적 getter 및 setter 방법이다.
그렇기 때문에,당신은 시설이라고 보고,당신이 선언하는@synthesize.그는 그것을 해야한다.아@프로토콜,상속
제휴하지 않습니다 StackOverflow