에서 슈퍼 클래스 속성을 설정 할 수 없음이 간단한 클래스 계층 보자목표 C - 서브 클래스
Tree.h :
@interface Tree : NSObject
@property (nonatomic, assign) id<TreeDelegate> delegate;
@end
Tree.m :
@implementation Tree
@synthesize delegate;
@end
을 Aspen.h :
,@interface Aspen : Tree
- (void)grow:(id<TreeDelegate>)delegate;
@end
Aspen.m :
@implementation Aspen
- (void) grow:(id<TreeDelegate>)d {
self.delegate = d;
}
@end
나는, 나는 다음과 같은 오류를 받고 있어요 self.delegate = d;
을하려고 :
-[Aspen setDelegate:]: unrecognized selector sent to instance 0x586da00
나는에 Tree
부모 클래스의 delegate
속성을 기다리고 있었다 하위 클래스는 그대로 볼 수 있지만 부모 클래스의 합성 된 setter가 표시되지 않으므로 오류가 나타나지 않는 것처럼 보입니다.
무엇이 누락 되었습니까? 하위 클래스 수준에서 속성을 다시 선언해야합니까? Aspen
의 구현 상단에 @dynamic
을 추가하려고 시도했지만 작동하지 않았습니다. 이 간단한 개념은 여기 있지만 해결책을 찾기 위해 한 시간을 찾고 있습니다. 이 시점에서 아이디어가 부족합니다.
위의 코드
--EDIT--
은 제가 보는 문제를 설명하기 매우 벗겨 다운 예입니다.
우리는 실제 코드가 필요하다고 생각합니다. 아스펜의'implmentation typo '를 고친 후에, 이것은 잘 동작합니다. – Tim
@Tim Typo가 고정되었습니다. 감사합니다. 그래서 -이게 그대로 작동해야합니까? – Madbreaks
실제 코드를 게시 할 수는 없지만 실제 소스를보다 자세히 반영하기 위해 예제를 업데이트했습니다. – Madbreaks