私はまだ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の質問ですが、この状況でのベストプラクティスが何であるかを把握しようとしています。