スーパークラスは、NSXMLParserDelegateを実装するNSOperationクラスです。サーバーから返されたXMLデータとURL要求を送信するだけです。このクラスは、NSXMLParserDelegateも実装するサブクラスによって継承されています。親のパーサデリゲートは、XMLレスポンスの一般的なエラーをキャッチしてから、子パーサデリゲートに渡してより具体的な解析を行うことになっています。スーパークラス内Objective-Cのスーパークラス内で 'self'を呼び出す
:
@implementation Sub
// main is not overidden in subclass
// and this should return parser delegate in the sub class
- (id) getParserDelegate {
return self;
}
@end
私は希望スーパーのmainメソッド内で
Sub *theSub = [[Sub alloc] init];
[self.queue addOperation:theSub]; // Super's main method will be called
すなわちサブ子のクラスを使用して操作をインスタンス化しています:サブクラス内
@implementation Super
#pragma mark NSOperation method
- (void) main {
id parentDelegate = [self getParserDelegate]; //?
id childDelegate = [self getParserDelegate]; //??
}
// I would like this to return parser delegate in the super class
- (id) getParserDelegate {
return self;
}
@end
親と子の両方の代理人にアクセスするのが好きですが、私は「自己」がいつも決心しているサブとスーパーの間で 'self'が呼び出されているかどうかにかかわらず、SubからSubへと移動します。 Superのmain内からSuperのgetParserDelegateを呼び出すことは可能ですか、それとも単なる悪い設計ですか?
「自己」についての私の混乱を解消しました。私は継承を破ることについてあなたが言っていることを得て、メインのパーサの代理人へのサブクラスとしてサブクラスを持っていると思います。それはうまくいくかもしれませんが、継承が必要なので、おそらくSuperからパーサーデリゲートを別のクラスに移動するような回避策を考えてみましょう。 – user1187378