是否有可变集合的文字语法?

ma1*_*w28 53 cocoa objective-c nsmutablearray nsmutabledictionary objective-c-literals

我知道我可以创造一个NSArray@[@"foo", @"bar"]NSDictionary@{@0 : @"foo", @1 : @"bar"}.

是否有用于创建NSMutableArrayNSMutableDictionary?的文字语法?

dan*_*ard 100

没有内置的方式,但我通常使用mutableCopy这样的方式:

NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

  • 这看起来效率低于`[NSMutableArray arrayWithObjects:@"1",@"2",@"3",nil]`. (3认同)

Lil*_*ard 17

没有.就像没有创建NSMutableString任何一种语法的语法一样.可变对象不是特别适合文字值.

  • 不得不同意最后一句话.例如,在Python编程中,默认情况下,集合是按字面创建的并且是可变的.它可以非常方便. (19认同)
  • 是的,有些东西叫做["元组"](http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences)是不可变的.`>(1,2,3)#tuple(immutable array)``> [1,2,3] #list(mutable array)` (5认同)
  • 如下所示,您可以执行以下`NSMutableArray * list = [@ [] mutableCopy];”,即在最后添加mutableCopy。这就是指定文字的方式 (2认同)

Ann*_*nne 17

但是,是否有创建NSMutableArray或NSMutableDictionary的字面语法?

不是.最佳选择:

[@[ @"foo", @"bar"] mutableCopy]
Run Code Online (Sandbox Code Playgroud)


nid*_*das 8

是.但并不完全.看看这个;

NSMutableArray *list = [@[] mutableCopy];

这会创建一个不可变的数组@[],mutableCopy并返回一个返回的数组NSMutableArray *.代替@[],您可以给出任何数组文字.