Преобразования не нужны, вы просто тратите место на жестком диске и циклы ЦП во время компиляции программы.
Даже с включенным ARC, компилятор знает, что для типа id
(то, что возвращает -objectAtIndex:
), наиболее вероятной сигнатурой метода для -intValue
является i@:
или метод, возвращающий целое число и принимающий 2 аргумента (self
и _cmd
).
Единственное место, где это могло бы изменить ситуацию, это если бы вы использовали точечный синтаксис, например.
int thisLetterInt = [levelSavedSolutionArrayFIX objectAtIndex:i].intValue; // compile error
Поскольку тип id
не показывает какие-либо свойства компилятору, вы должны сначала привести его.
int thisLetterInt = ((NSNumber *)[levelSavedSolutionArrayFIX objectAtIndex:i]).intValue; // compiles fine
Что касается освобождения, то нет, примитивные типы выделяются в стеке, а не в куче, что означает, что они будут очищаться автоматически после выхода из текущей области.