Как я могу переписать следующий служебный класс, чтобы получить все строковые значения класса для определенного типа -, используя функции выполнения Objective -c, как показано ниже?
В документации ARC конкретно указано, что realloc следует избегать, и я также получаю следующую ошибку компилятора в этой строке:
classList = realloc(classList, sizeof(Class) * numClasses);
«Неявное преобразование не -цели -типа указателя C 'void *' в '__небезопасный _несохраненный класс *' запрещено с помощью ARC"
Приведенный ниже код является ссылкой на оригинальную статью, которую можно найти здесь .
+ (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;
}
Ваша помощь будет высоко оценена.