Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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运行时中使用objc_getClassList_Objective C_Ios_Xcode_Runtime - Fatal编程技术网

Objective c 在objective c运行时中使用objc_getClassList

Objective c 在objective c运行时中使用objc_getClassList,objective-c,ios,xcode,runtime,Objective C,Ios,Xcode,Runtime,在苹果的开源运行时文档中(可从以下网址获得:http://opensource.apple.com/source/objc4/objc4-208/runtime/objc-runtime.h)apple提供了一个示例方法,可以获取应用程序中的所有类。看起来是这样的: int numClasses = 0, newNumClasses = objc_getClassList(NULL, 0); Class *classes = NULL; while (numClasses < newNum

在苹果的开源运行时文档中(可从以下网址获得:http://opensource.apple.com/source/objc4/objc4-208/runtime/objc-runtime.h)apple提供了一个示例方法,可以获取应用程序中的所有类。看起来是这样的:

int numClasses = 0, newNumClasses = objc_getClassList(NULL, 0);
Class *classes = NULL;
while (numClasses < newNumClasses) {
    numClasses = newNumClasses;
    classes = realloc(classes, sizeof(Class) * numClasses);
    newNumClasses = objc_getClassList(classes, numClasses);
}
// now, can use the classes list; if NULL, there are no classes
free(classes);
int numclass=0,newnumclass=objc_getClassList(NULL,0);
Class*classes=NULL;
while(numclass
如果这是一个蹩脚的问题,很抱歉,但是如果我们在下一行将numClasses设置为newNumClasses,那么在其中包含while语句的目的是什么?看起来,虽然在一段时间内,该块将被执行一次,但我可能完全错过了一些东西。有人对此有什么见解吗


谢谢

注意,
newNumClasses
是由于调用了
objc_getClassList
而设置的,因此如果它增加,那么
numClasses
。是的,但它不会只执行一次吗?这段代码在使用或不使用while语句时执行的方式是否完全相同?不一定。如果
newNumClasses
一开始是5,那么第二次调用
objc_getClassList
时返回10,然后它将再次执行while循环,等等。是的,他们展示了如何使用NULL只获取计数并将类添加到现有数组中。@mattjgalloway但第二次调用它时,它得到了numclass的大小限制,这等于根据初始getClassList调用得到的类总数。那么,它们又有什么不同呢?