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 objc_getClassList返回的类数不正确?_Objective C_Runtime - Fatal编程技术网

Objective c objc_getClassList返回的类数不正确?

Objective c objc_getClassList返回的类数不正确?,objective-c,runtime,Objective C,Runtime,我有一些这样的代码: int numClasses = objc_getClassList(NULL, 0); ... Class * classes = malloc(sizeof(Class) * numClasses); numClasses = objc_getClassList(classes, numClasses); 有时有效,有时无效。当它失败时,我看到第二次调用返回的numclass值与第一次调用不同。例如,在项目中,第一个调用返回1534。有时第二个也返回1534,一切正常

我有一些这样的代码:

int numClasses = objc_getClassList(NULL, 0);
...
Class * classes = malloc(sizeof(Class) * numClasses);
numClasses = objc_getClassList(classes, numClasses);
有时有效,有时无效。当它失败时,我看到第二次调用返回的
numclass
值与第一次调用不同。例如,在项目中,第一个调用返回1534。有时第二个也返回1534,一切正常。但有时它返回1536,由于没有分配足够的内存,程序因EXC_BAD_访问而崩溃


我的问题是,为什么
objc\u getClassList
会返回两个不同的数字(有时!)?

在为
类编制索引时,您稍后在代码中是否使用了
numclass
的新值?
行中发生了什么?您(例如)正在加载包吗?我认为类的数量在第一次调用和第二次调用之间简单地增长了。用try{}catch{}包围它,如果失败了,增加数量。我想正如你们所说的,更多的东西正在被加载。“…”实际上不包括更多的NSlog和其他内容。在这段代码之后,我会循环结果,这就是为什么我会得到崩溃的原因。看起来苹果的API示例代码不是很好,所以目前我采取的方法是忽略第二个返回值,只使用第一个作为循环。这似乎阻止了撞车,但我不确定其副作用。面对同样的问题,我很想听听人们是如何解决的。我的解决方法也是一样,只是忽略返回的第二个
numclass
,因为我只为第一次尝试分配了足够的大小,但感觉不对。