可能重复:
What are the details of “Objective-C Literals” mentioned in the Xcode 4.4 release notes?
我对@[]
和@{}
提出了疑问。
一些代码来自互联网:
self.searches = [@[] mutableCopy];
self.searchResults = [@{} mutableCopy];
@[]
是否等于[NSMutableDictionary dictionary]
?@{}
是否等于[NSMutableArray array]
?答案 0 :(得分:6)
@[]
等于[NSArray array]
或[[NSArray alloc] init]
。@{}
等于[NSDictionary dictionary]
或[[NSDictionary alloc] init]
。(取决于上下文以及您是否使用Automatic Reference Counting (ARC))
这就是为什么你有时会看到像[@[] mutableCopy]
这样的东西。这将创建一个空的不可变数组并创建它的可变副本。
结果与使用[NSMutableDictionary dictionary]
或[[NSMutableDictionary alloc] init]
相同。
答案 1 :(得分:1)
@{}
等于[NSDictionary dictionary]
@[]
等于[NSArray array]
所以[@[] mutableCopy]
创建一个空的不可变对象,然后对它进行可变复制。我不认为你的效率会降低。
答案 2 :(得分:0)
第一个 @ [] 是创建数组的简写,例如以下两个元素的数组:
NSArray *array = @[ @"First", @"Second"];
第二个 @ {} 会创建一个字典,例如:
NSDictionary *dictionary = @{
@"first" : someValue,
@"second" : someValue,
};