Mar*_*Him 8 objective-c nsarray ios
似乎有不同的实例化NSArrays的方法(NSDictionary和其他一些方法相同).
我知道:
[NSArray array][NSArray new]@[] [[NSArray alloc] init]出于可读性的原因,我经常坚持[NSArray array],但所有这些之间有什么区别,他们都真的这样做吗?
Sve*_*ven 17
对于所有这些结果都是相同的,你得到一个新的空的不可变数组.不同的方法有不同的内存管理含义.使用ARC这最终没有区别,但在ARC之前,您必须使用正确的版本或发送适当的保留,释放或自动释放消息.
[NSArray new]并[[NSArray alloc] init]返回一个+1保留计数的数组.在ARC之前,您必须释放或自动释放该阵列,否则您将泄漏内存.
[NSArray array]并@[]返回一个已经自动释放的数组(保留计数0).如果你希望它在没有ARC的情况下坚持下去,你必须手动保留它,否则当弹出当前自动释放池时它将被释放.
[NSArray array] :创建并返回一个空数组
[NSArray new] :alloc,init并返回一个NSArray对象
@[] :与1相同.
[[NSArray alloc] init] :与2相同.
不同之间[NSArray array]和[[NSArray alloc] init]是否有非ARC:
[NSArray array]是一个自动释放对象.retain如果你想保留它,你必须打电话.例如,当你return一个阵列.
[[NSArray alloc] init]是一个保留的对象.所以retain如果你想保留它,你不必再打电话.
使用ARC,它们是相同的.
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |