Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何从类列表中找到从特定类继承的类?_Objective C_Cocoa - Fatal编程技术网

Objective c 如何从类列表中找到从特定类继承的类?

Objective c 如何从类列表中找到从特定类继承的类?,objective-c,cocoa,Objective C,Cocoa,我得到了我申请的所有类的列表 我想从我的列表中找到从MySpecificRapperClass继承的每个类 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

我得到了我申请的所有类的列表

我想从我的列表中找到从MySpecificRapperClass继承的每个类

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); 
int numclass=objc_getClassList(NULL,0);
类别*classes=malloc(sizeof(Class)*numclass);
objc_getClassList(类、numClass);
for(int i=0;i
有人知道怎么做吗? 谢谢你的帮助。
Fred

要测试某个类是否继承了您的类,请尝试

if ([obj isKindOfClass: MySpecificWrapperClass])

要测试某个类是否继承了您的类,请尝试

if ([obj isKindOfClass: MySpecificWrapperClass])

也许有更好的解决办法,但暴力应该做到这一点。返回给定的
对象的超类的
对象。当您到达根类时,它返回
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);
    };
}
for(int i=0;i

这是假设您希望检查给定类的整个层次结构,即,您希望每个类在其祖先中的任何位置都有您的类。如果您只关心直接子类,那么很明显,您只需要调用一次
class\u getSuperclass

可能有更好的解决方案,但暴力应该做到这一点。返回给定的
对象的超类的
对象。当您到达根类时,它返回
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);
    };
}
for(int i=0;i

这是假设您希望检查给定类的整个层次结构,即,您希望每个类在其祖先中的任何位置都有您的类。如果您只关心直接子类,显然,您只需要调用一次
class\u getSuperclass

您可以使用
isSubclassOfClass:
方法检查一个类是否是另一个类的子类,该方法由
NSObject
定义


您可以使用
NSObject
定义的
isSubclassOfClass:
方法检查一个类是否是另一个类的子类


谢谢您的回答。在这个层次上,我没有对象,只有类。如果我指导我的班级,我可以做到这一点,但如果我能做到这一点就不合适了。是的。如果没有类的实际对象,我不知道有什么方法可以实现这一点。祝你好运!谢谢你的回答。在这个层次上,我没有对象,只有类。如果我指导我的班级,我可以做到这一点,但如果我能做到这一点就不合适了。是的。如果没有类的实际对象,我不知道有什么方法可以实现这一点。祝你好运!毕竟,层次结构基本上只是一个链表。很乐意帮忙!“发现它也有用”看起来确实很严厉,尽管+1仍然层次结构基本上只是一个链表,毕竟。很乐意帮忙!发现它也很有用虽然+1仍然是:
for(int i=0;i
但它在一个类中崩溃了。我做到了:
for(int I=0;I
但它在其中一个类中崩溃。