3

通常,当我们要初始化时,NSMutableArray我们使用:

NSMutableArray *mArr = [[NSMutableArray alloc] initWithObjects: @"one", @"two", @"three", nil];

但是,使用如下语法是否正确:

NSMutableArray *mArr = @[@"one", @"two", @"three"].mutableCopy;

我明白,它会多工作几纳秒。但我认为第二种方式更具可读性,我准备牺牲那些纳秒。

使用这种结构可以吗?ARC 是否清理了我用来获取可变副本的未使用的 NSArray?不会泄密吗?

4

3 回答 3

4

但我认为第二种方式更具可读性

就个人而言,我觉得它更令人困惑,甚至更令人困惑,因为您将mutableCopy其用作属性。正确,正确,但完全误导恕我直言。

为什么不直接利用继承呢?

NSMutableArray *ma = [NSMutableArray arrayWithObjects:@"foo", @"bar", nil];

有时默认情况下可变的集合会更有用。* 叹息 *

于 2013-10-04T17:01:51.060 回答
3

是的,如果您愿意(如您所指出的)支付性能成本,可以以这种方式初始化您的可变数组。ARC 将适当地清理所有内容。它不会泄漏。

于 2013-10-04T16:57:32.350 回答
0

我通常使用arrayWithArray。

NSMutableArray *foo = [NSMutableArray arrayWithArray:@[@"one", @"two", @"three"]];
于 2013-10-04T16:56:56.947 回答