Разумнее ли использовать CFMutableArrayRef в этом случае?

#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];
  

Это лучше, чем ваш метод