次の単純なクラス階層を見てください。
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
アスペン.m :
@implementation Aspen
- (void) grow:(id<TreeDelegate>)d {
self.delegate = d;
}
@end
しようとするとself.delegate = d;
、次のエラーが発生します。
-[Aspen setDelegate:]: 認識されないセレクターがインスタンス 0x586da00 に送信されました
Tree
親クラスのプロパティがそのままサブクラスに表示されることを期待していましたdelegate
が、エラーは親クラスの合成されたセッターが表示されないことを示しているため、そうではないようです。
私は何が欠けていますか?サブクラス レベルでプロパティを再宣言する必要がありますか? @dynamic
の実装の先頭に追加しようとしましたAspen
が、それもうまくいきませんでした。ここでは非常に単純な概念ですが、解決策を見つけようとして探し回るのに 1 時間を費やしました。この時点でアイデアがありません。
- 編集 -
上記のコードは、私が見ている問題を示すための非常に簡素化された例です。