我如何找到一个类继承自一个特定的类从我的类列表? [英] How can I find a class which inherit from a particular class from my Class list?
问题描述
我得到我的应用程序的所有类的列表。
I get the list of all classes of my application.
我想从我的列表中找到继承自MySpecificWrapperClass的每个类。
I want to find each Class from my list which inherits from MySpecificWrapperClass.
int numClasses = objc_getClassList(NULL, 0);
Class *classes = malloc(sizeof(Class) * numClasses);
objc_getClassList(classes, numClasses);
for (int i = 0; i < numClasses; i++) {
Class class = classes[i];
if( isThisClassInheritsFrom(class,MySpecificWrapperClass )){
MySpecificWrapperClass o = [[class alloc]init];
...
}
}
free(classes);
剂量有人知道如何做?
感谢帮助。
Fred
Dose somebody know how to do that? Thank for help. Fred
推荐答案
可能有更好的解决方案,但强力应该做。 class_getSuperclass 返回给定类
对象的超类的类
对象。当你到达根类,它返回 Nil
。
There may be a better solution, but brute force should do it. class_getSuperclass returns the Class
object for a given Class
object's superclass. When you get to the root class, it returns Nil
.
for (int i = 0; i < numClasses; i++) {
Class class = classes[i];
Class superclass = class_getSuperclass(class);
while( superclass != Nil ){
if( superclass == MySpecificWrapperClass ){
// Got one!
break;
}
superclass = class_getSuperclass(superclass);
};
}
这是假设您要检查 >对于给定类的层次结构,即,你希望每个类都有你的类在其祖先的任何地方。如果你只关心直接子类,显然,你只需要调用 class_getSuperclass
一次。
This is assuming that you want to check the entire hierarchy for a given class, i.e., you want every class that has your class anywhere in its ancestors. If you only care about direct subclasses, obviously, you only need to call class_getSuperclass
once.
这篇关于我如何找到一个类继承自一个特定的类从我的类列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!