特定のクラスのクラスメソッドのリストを取得するにはどうすればよいですか? class_copyMethodList
で宣言されている関数を使用してみました<objc/runtime.h>
が、それはインスタンス メソッドしか提供していません。クラスメソッドのメソッドを提供する関数も見つけましたが、最初にメソッドへのセレクターがある場合のみです(class_getClassMethod
)。
何か案は?
ありがとう、
デイブ
特定のクラスのクラスメソッドのリストを取得するにはどうすればよいですか? class_copyMethodList
で宣言されている関数を使用してみました<objc/runtime.h>
が、それはインスタンス メソッドしか提供していません。クラスメソッドのメソッドを提供する関数も見つけましたが、最初にメソッドへのセレクターがある場合のみです(class_getClassMethod
)。
何か案は?
ありがとう、
デイブ
メタクラスを使用します。
#import <objc/runtime.h>
int unsigned numMethods;
Method *methods = class_copyMethodList(objc_getMetaClass("NSArray"), &numMethods);
for (int i = 0; i < numMethods; i++) {
NSLog(@"%@", NSStringFromSelector(method_getName(methods[i])));
}
free(methods);
class_copyMethodList
渡されたクラスのインスタンス メソッドを返します。クラス メソッドは、実際にはクラスのメタクラスのインスタンス メソッドです。
問題の解決策は、 のAPI ドキュメントに含まれていますclass_copyMethodList
。