#objective-c #c #arrays
#objective-c #c #массивы
Вопрос:
Мне нужно отслеживать целочисленные значения в массиве, и иногда мне нужно изменить значение в массиве.
Прямо сейчас я делаю это:
// Read an integer from the array
NSNumber* num = [NSNumber numberWithInteger:someInteger];
[numArray addObject:num];
Для обновления значения:
// Update an integer in the array
NSNumber* num = [numArray lastObject]; // get old
NSInteger numInt = [numInt integerValue]; // convert
NSNumber* newNum = [NSNumber numberWithInteger:numInt someAddition]; // create new
[numArray removeLastObject]; // remove old
[numArray addObject:newNum]; // set new
Это так плохо. Задействовано так много объектов, и все потому, что NSNumber неизменяем. Теперь я подумал, может быть, я должен перейти на старый добрый C и использовать CFMutableArrayRef? Могу ли я хранить там простые значения NSInteger без всех этих накладных расходов?
Ответ №1:
Вы могли бы использовать replaceObjectAtIndex: с помощью Object: command:
[numArray replaceObjectAtIndex:[array count]-1 withObject:newNum];
Это лучше, чем ваш метод