このクラスとそのサブクラスがあるとしましょう
@interface MySuperClass
- (void)open:(id)type value:(id)value;
- (void)openWebpage:(NSURL*)url;
@end
@interface MySubClass
- (void)openWebpage:(MyBookmarkClass*)bookmark;
@end
そして、その呼び出しは を[someMySubclass openWebpage:someBookmark]
呼び出します[super open:BookmarkClass value:self.url]
。とopen:value
呼び出します[self openWebpage:url]
。
これは非常に不自然なことだと思いますが、同様の状況に遭遇しました。私の混乱は、[self openWebpage:url]
で呼び出されているにもかかわらずMySuperClass
、 openWebpage: が実行されると、呼び出し元のコンテキストで実行されているMySubClass
ことNSURL
です。
私の質問は次のとおりです。元のコンテキストで何かを強制的に呼び出す方法はありますか? または、チェーンを上って、一番上に最も近いメソッドを見つけることができる限り何度でも super を呼び出すかのようにしますか?