通常,当我们要初始化NSMutableArray
时,我们会使用:
NSMutableArray *mArr = [[NSMutableArray alloc] initWithObjects: @"one", @"two", @"three", nil];
但是,使用如下语法是否正确
NSMutableArray *mArr = @[@"one", @"two", @"three"].mutableCopy;
据我所知,它的工作时间会延长几个纳秒。但我认为第二种方式更具可读性,我已经准备好牺牲那些纳秒。
使用这种结构可以吗? ARC是否清理了那些未使用的NSArray,我正在使用它来获取可变副本?这不是泄密吗?
答案 0 :(得分:4)
但我认为第二种方式更具可读性
就我个人而言,我发现它更令人困惑,因为你使用mutableCopy
就好像它是一个属性一样更令人困惑。正确,正确,但完全误导恕我直言。
为什么不利用继承?
NSMutableArray *ma = [NSMutableArray arrayWithObjects:@"foo", @"bar", nil];
有时,默认情况下可变的集合会更有用。 *叹*
答案 1 :(得分:3)
是的,如果您愿意(如您所示)支付性能成本,则可以通过这种方式初始化您的可变阵列。 ARC将适当地清理一切。它不会泄漏。
答案 2 :(得分:0)
我通常使用arrayWithArray。
NSMutableArray *foo = [NSMutableArray arrayWithArray:@[@"one", @"two", @"three"]];