NSInvocation
を使用して、サブクラスからスーパークラスメソッドを呼び出そうとしています。関連するコードは比較的単純で、次のようになります。
- (NSInvocation*) invocationWithSelector:(SEL)selector {
NSInvocation* call = [[NSInvocation alloc] init];
[call retainArguments];
call.target = super; //ERROR: use of undeclared identifier 'super'
call.selector = @selector(selector);
return call;
}
super
これは私には少し奇妙に思えます。なぜなら、それはとほぼ同じルールに従っているといつも思っていたからですself
(つまり、問題のオブジェクトへの直接参照として扱われ、変数に割り当てられ、戻り値として使用されるなど)。 。これは実際にはそうではないようです。
NSInvocation
とにかく、スーパークラスの実装をターゲットにする簡単な方法はありますか(self
サブクラスがスーパークラスのメソッドをオーバーライドするため、ターゲットとして使用できません)、または他のアプローチを探す必要がありますか?