0

プロジェクトで使用されているクラスのリストを取得するエレガントな方法はありますか?

私はObjective-Cのすべてのクラスを取得することを認識しており、クラスを除外するobjc_getClassList(...)ために使用することを避けようとしています.class_conformsToProtocol

ありがとう。

4

2 に答える 2

2

Xcode でCmd+2を押してシンボル ナビゲーターを開き、C左下隅のアイコンを押してクラスでフィルター処理します。

アイコンの横にあるドキュメント アイコンを押すと、さらにフィルターをかけることができCます。結果には、プロジェクトで定義されたクラスのみが含まれます。これは、クリックする必要があるボタンが赤でマークされた画像です。

クラスおよびプロジェクトによる Xcode シンボル ナビゲーターのフィルター処理の画像

于 2013-04-20T01:59:33.587 に答える
1

このコードは、指定したクラス プレフィックスで始まるすべてのクラスをランタイムで検索し、それらの名前を返します (入力されていますが、コンパイルされていないことに注意してください)。

NSArray *AllClassNamesInRuntimeWithPrefix(NSString *myClassPrefix) {
    NSMutableArray *retObj = [NSMutableArray array];

    int nClasses = objc_getClassList(NULL, 0);
    if (nClasses > 0) {
        Class allClasses[] = malloc( nClasses * sizeof(Class) );
        nClasses = objc_getClassList(allClasses, nClasses );

        int i;
        for (i = 0; i < nClasses; i++) {
            NSString *thisClassName = NSStringFromClass( allClasses[i] );
            if ([thisClassName hasPrefix:myClassPrefix]) {
                [retObj appendObject:thisClassName];
            }
        }
        free( allClasses );
    }
    return [NSArray retObj];
}

ランタイムには「プロジェクト」のパターンがなく、クラスは実行可能ファイルまたはフレームワークに存在し、いつでもロードできるため、プロジェクト内のすべてのクラスを実行時に検索するのは少し難しいです。

于 2013-04-20T03:44:07.157 に答える