Я все еще обертывание моей головы вокруг некоторых нюансов управления памятью в Objective-C, и придумал следующий случай я не уверен насчет:Уменьшение объема памяти функции с множеством автореализованных переменных?
+ (NSDecimalNumber*)factorial: (NSDecimalNumber *)l {
NSDecimalNumber *index = l;
NSDecimalNumber *running = [NSDecimalNumber one];
for (; [index intValue] > 1; index = [index decimalNumberBySubtracting:[NSDecimalNumber one]]) {
running = [running decimalNumberByMultiplyingBy: index];
}
return running;
}
Здесь decimalNumberByMultiplyingBy и decimalNumberBySubtracting будут создание много NSDecimalNumbers, которые в конечном итоге получат автореализацию, поскольку я это понимаю, но до тех пор я беспокоюсь, что содержащаяся программа будет висящей до огромного количества памяти.
Должен ли я когда-нибудь вводить пул авторефератов? (Если это где?) Это будет иметь заметное влияние на производительность (по сравнению с побочным эффектом использования большого количества памяти)?
Является ли автореализационный правый механизм для использования здесь? Должен ли я смотреть на разрыв цикла и ручное освобождение памяти, поскольку я покончил с этим?
Это, вероятно, вопрос n00b, но я пытаюсь получить аромат, для которого лучшая практика (ы) есть/находятся в этой ситуации.
Примечание: Я понимаю, что это не будет суперэффективным методом для расчета факториалов из-за ограничений диапазона NSDecimalNumber, только что появившихся в моей голове для примера. –