ker*_*sen 5 memory-management objective-c autorelease
当我需要一个临时使用的数组时,它们之间有什么区别:
1:
NSMutableArray *stuff = [[NSMutableArray alloc] init];
// use the array
[stuff release];
Run Code Online (Sandbox Code Playgroud)
2:
NSMutableArray *stuff = [NSMutableArray array];
// use the array
Run Code Online (Sandbox Code Playgroud)
3:
NSMutableArray *stuff = [[[NSMutableArray alloc] init] autorelease];
// use the array
Run Code Online (Sandbox Code Playgroud)
我更喜欢2号,因为它更短.有没有充分的理由使用1号或3号?
Wil*_*and 10
在大多数情况下,2号可能是最佳选择.
无论出于何种原因,1号都有可能在某一时刻失去释放,但它会立即释放阵列,这在内存不足的环境中可能很有用.
3号基本上是2号的冗长等价物,但如果你想使用没有相应arrayWith*的initWith*,它确实会派上用场.
注意:如果你是内存不足的,比如在一个昂贵的循环中,你需要为每次迭代提供一个新的数组; 不要释放和分配新数组; 只需使用-removeAllObjects并回收数组.
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |