このクラスとそのサブクラスがあるとしましょう
@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 を呼び出すかのようにしますか?