Цель C Авто-релиз в цикле с NSNumberFormatter
Я пытаюсь отформатировать массив чисел для отображения в массиве CCLabelTTF в цикле. NSNumberFormatter возвращает объект автоматического выпуска. Я не совсем уверен, как мне следует обращаться с управлением памятью здесь. Любой совет будет принята с благодарностью.
Вот проблема, которую я пытаюсь выяснить:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSString *tempString;
for(int i = 0; i<10; i++){
tempString = [formatter stringFromNumber:[NSNumber numberWithInteger:NumberArray[i]]];
CCLabelTTFArray[i] = [[CCLabelTTF alloc] initWithString: tempString fontName:@"Arial" fontSize:10.0f];
[tempString release];
}
[formatter release];
1 ответ
Вам не нужно звонить [tempString release];
: цикл выполнения автоматически высвобождает объекты для вас через некоторое время после завершения вашего метода. С короткими циклами (такими как у вас, которые имеют только десять итераций) больше не о чем беспокоиться. Для циклов с тысячами итераций вы можете рассмотреть возможность добавления пула автоматического выпуска.
Я думал, что это может вызвать утечку памяти, так как в конце функции он будет автоматически освобождать tempString, но не все предыдущие выделения tempString
Каждый вызов stringFromNumber:
Метод добавляет свое возвращаемое значение в пул авто-релиза, поэтому независимо от того, сколько раз выполняется цикл, все возвращаемые строки будут автоматически освобождены.