//Mutable object...
//first initialize
NSMutablearray *arr=[[NSMutableArray alloc]init];
//then add value
[arr addobjects:@"iPhone",@"Android",nil];
//But we can assign value immutable array without initialize
NSArray *brr=@[@"iPhone",@"Android"];
答案 0 :(得分:3)
有很多方法可以初始化NSMutableArray
。例如:
NSMutableArray *arr = [NSMutableArray arrayWithObjects: @"iPhone", @"Android", nil];
@[]
文字语法是ObjC的一个相当新的补充,它返回NSArray
(不可变),这就是为什么你不能直接将它分配给{{1} }。这只是NSMutableArray
的语法糖。如果您想使用该语法,您仍然可以:
[NSArray arrayWithObjects:count:]
答案 1 :(得分:1)
这就是文字语法的方式。在Objective-C中,它创建了一个NSArray *brr = [@[@"iPhone",@"Android"] mutableCopy];
。如果你真的想要使用语法但最终得到一个可变数组,你可以使用这样的副本:
NSArray
这个系统在Swift中要好得多,它只是一个名为NSMutableArray *brr=@[@"iPhone",@"Android"].mutableCopy;
的值类型,你用Array
或var
let
答案 2 :(得分:1)
您反对两步流程:
//first initialize
NSMutableArray *arr=[[NSMutableArray alloc]init];
//then add value
[arr addobjects:@"iPhone",@"Android",nil];
你说你宁愿写一个文字数组:
NSArray *brr=@[@"iPhone",@"Android"];
所以结合起来:
NSMutableArray* arr = [NSMutableArray arrayWithArray: @[@"iPhone",@"Android"]];
答案 3 :(得分:0)
因为文字的类型是不可变的。此外,您应该记住NSMutableArray是NSArray的子类。您可以将子类的实例分配给其超类,但不能。否则。