0

有没有一种优雅的方法来获取项目中使用的类列表?

我知道objc_getClassList(...)哪个会获取 Objective-C 中的所有类,并且我试图避免使用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 回答