初始化NSMutableArray时使用短语法是否正确?

时间:2013-10-04 16:54:05

标签: objective-c nsmutablearray

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

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

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

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

据我所知,它的工作时间会延长几个纳秒。但我认为第二种方式更具可读性,我已经准备好牺牲那些纳秒。

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

3 个答案:

答案 0 :(得分:4)

  

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

就我个人而言,我发现它更令人困惑,因为你使用mutableCopy就好像它是一个属性一样更令人困惑。正确,正确,但完全误导恕我直言。

为什么不利用继承?

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

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

答案 1 :(得分:3)

是的,如果您愿意(如您所示)支付性能成本,则可以通过这种方式初始化您的可变阵列。 ARC将适当地清理一切。它不会泄漏。

答案 2 :(得分:0)

我通常使用arrayWithArray。

NSMutableArray *foo = [NSMutableArray arrayWithArray:@[@"one", @"two", @"three"]];