gpt4 book ai didi

objective-c - 重新分配()和圆弧

转载 作者:太空狗 更新时间:2023-10-30 03:31:24 25 4
gpt4 key购买 nike

我如何能够重写以下实用程序类以获取特定类型的所有类字符串值 - 使用如下所示的 Objective-c 运行时函数?

ARC 文档明确指出应避免使用 realloc,我还在这一行收到以下编译器错误:

classList = realloc(classList, sizeof(Class) * numClasses);

“ARC 不允许将非 Objective-C 指针类型‘void *’隐式转换为‘__unsafe_unretained Class *’”

下面的代码是对原始文章的引用,可以找到here .

+ (NSArray *)classStringsForClassesOfType:(Class)filterType {

int numClasses = 0, newNumClasses = objc_getClassList(NULL, 0);
Class *classList = NULL;

while (numClasses < newNumClasses) {
numClasses = newNumClasses;
classList = realloc(classList, sizeof(Class) * numClasses);
newNumClasses = objc_getClassList(classList, numClasses);
}

NSMutableArray *classesArray = [NSMutableArray array];

for (int i = 0; i < numClasses; i++) {
Class superClass = classList[i];
do {
superClass = class_getSuperclass(superClass);
if (superClass == filterType) {
[classesArray addObject:NSStringFromClass(classList[i])];
break;
}
} while (superClass);
}

free(classList);

return classesArray;
}

非常感谢您的帮助。

最佳答案

ARC 迫使您更加明确地进行内存管理。在这种情况下,您只需要显式转换 realloc 的输出:

classList = (Class *)realloc(classList, sizeof(Class) * numClasses);

关于objective-c - 重新分配()和圆弧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com