是否有一种优雅的方法来获取项目中使用的类列表?
我知道objc_getClassList(...)
获取了Objective-C中的所有类,我试图避免使用class_conformsToProtocol
过滤掉类。
感谢。
答案 0 :(得分:2)
在Xcode中,按 Cmd + 2 打开符号导航器,然后按左下角的C
图标按类过滤。
按C
图标旁边的文档图标可以进一步过滤。结果将只包含项目中定义的类。这是一张图片,你必须点击按钮标记为红色:
答案 1 :(得分: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];
}
在运行时搜索项目中的每个类 是一个很高的顺序,因为运行时不具有“项目”的模式,并且类可以存在于可执行文件中或框架,可以随时加载。