realloc ()и ARC

Как я могу переписать следующий служебный класс, чтобы получить все строковые значения класса для определенного типа -, используя функции выполнения 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;
}

Ваша помощь будет высоко оценена.

8
задан nhahtdh 19 July 2012 в 13:55
поделиться