テストメソッドで本質的に何も知らないクラスでクラスメソッドを呼び出そうとするという興味深い問題があります。その継承とそれが実装する可能性のあるプロトコルを調べることはできますが、NSInvocation に縛られずにメソッドを呼び出す簡単な方法がわかりません。以下のコードは、大雑把ではありますが、私が抱えている問題を実証しようとしています。
@interface ClassA : NSObject
+ (Class)classIsPartialClassOf;
@end
@implementation ClassA
+ (Class)classIsPartialClassOf {
return [NSString class];
}
@end
@interface ClassB : NSObject
@end
@implementation ClassB
- (id)init {
[ClassB testClass:[ClassA class]];
}
+ (void)testClass:(Class)classDecl {
/* obviously if you know the type you can just call the method */
[ClassA classIsPartialClassOf];
/* but in my instance I do not know the type, obviously there are no classmethods to perform selector such as the fictional one below */
[classDecl performSelector:@selector(classIsPartialClassOf)];
}
@end
実装を取得するためのメソッドはインスタンス バリアントを返すようで、静的クラス自体で起動することはできません。
私の選択肢は呼び出しに限定されていますか、それとも明らかなことを見逃していて、自分自身を蹴る必要がありますか?
よろしくお願いいたします。