15

特定のクラスのクラスメソッドのリストを取得するにはどうすればよいですか? class_copyMethodListで宣言されている関数を使用してみました<objc/runtime.h>が、それはインスタンス メソッドしか提供していません。クラスメソッドのメソッドを提供する関数も見つけましたが、最初にメソッドへのセレクターがある場合のみです(class_getClassMethod)。

何か案は?

ありがとう、

デイブ

4

2 に答える 2

25

メタクラスを使用します。

#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);
于 2009-08-15T19:30:50.203 に答える
14

class_copyMethodList渡されたクラスのインスタンス メソッドを返します。クラス メソッドは、実際にはクラスのメタクラスのインスタンス メソッドです。

問題の解決策は、 のAPI ドキュメントに含まれていますclass_copyMethodList

于 2009-08-15T19:27:36.527 に答える