5

当我需要一个临时使用的数组时,它们之间有什么区别:

1:

NSMutableArray *stuff = [[NSMutableArray alloc] init];
// use the array
[stuff release];

2:

NSMutableArray *stuff = [NSMutableArray array];
// use the array

3:

NSMutableArray *stuff = [[[NSMutableArray alloc] init] autorelease];
// use the array

我更喜欢 2 号,因为它更短。使用数字 1 或 3 有什么好的理由吗?

4

1 回答 1

10

在大多数情况下,2 号可能是最佳选择。

无论出于何种原因,第 1 号都有可能在某个时间点失去释放,但它确实会立即释放数组,这在内存匮乏的环境中可能很有用。

数字 3 基本上是数字 2 的详细等价物,但如果您想使用没有相应 arrayWith* 的 initWith*,它确实会派上用场。

注意:如果您内存不足,例如在昂贵的循环中,每次迭代都需要一个新数组;不要释放和分配新数组;只需使用-removeAllObjects和回收阵列。

于 2010-11-02T11:30:21.830 回答