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的情况下坚持下去,你必须手动保留它,否则当弹出当前自动释放池时它将被释放.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...