我仍在思考 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 将创建很多 NSDecimalNumber,据我了解,它们最终会自动释放,但我担心直到那个时候包含的程序会占用大量内存。
我应该在某处引入自动释放池吗?(如果是在哪里?)这是否会对性能产生显着影响(与使用大量内存的副作用相比)?
自动释放在这里使用正确的机制吗?我是否应该考虑将循环分开并在完成后手动释放内存?
这可能是一个 n00b 问题,但我试图了解在这种情况下最佳实践是什么。