문제

나는 프로토콜:

@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.그는 그것을 해야한다.아@프로토콜,상속

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top