ios – NSArray.array / .new / @ [] / alloc-init之间的区别

前端之家收集整理的这篇文章主要介绍了ios – NSArray.array / .new / @ [] / alloc-init之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎有不同的实例化NS Arrays方法(NSDictionary和其他一些方法相同).

我知道:

> [NSArray数组]
> [NSArray新]
> @ []
> [[NSArray alloc] init]

出于可读性的原因,我通常坚持使用[NSArray数组],但是所有这些之间的区别是什么,它们是否真的一样?

解决方法

结果对于所有这些都是相同的,你得到一个新的空的不可变数组.但是,不同的方法具有不同的内存管理含义.使用ARC这最终没有区别,但在ARC之前,您必须使用正确的版本或发送适当的保留,释放或自动释放消息.

[NSArray new]和[[NSArray alloc] init]返回一个保留计数为1的数组.在ARC之前,您必须释放或自动释放该阵列,否则您将泄漏内存.

[NSArray数组]和@ []返回一个已经自动释放的数组(保留计数0).如果你想让它在没有ARC的情况下坚持下去,你必须手动保留它,否则当弹出当前自动释放池时它将被释放.

原文链接:https://www.f2er.com/iOS/329183.html

猜你在找的iOS相关文章