5

可能重复:
Xcode 4.4 发行说明中提到的“Objective-C Literals”的细节是什么?

我对@[]和有疑问@{}

部分代码取自互联网:

self.searches = [@[] mutableCopy]; 
self.searchResults = [@{} mutableCopy]; 
  1. @[]等于[NSMutableDictionary dictionary]? _
  2. @{}等于[NSMutableArray array]? _
4

3 回答 3

10
  1. 编号@[]等于[NSArray array][[NSArray alloc] init]
  2. 编号@{}等于[NSDictionary dictionary][[NSDictionary alloc] init]

(取决于上下文以及您是否使用自动引用计数(ARC)

这就是为什么你[@[] mutableCopy]有时会看到这样的事情。这将创建一个空的不可变数组并创建它的可变副本。

结果与使用[NSMutableDictionary dictionary]or相同[[NSMutableDictionary alloc] init]

于 2012-11-28T14:12:25.827 回答
1

@{}等于[NSDictionary dictionary]

@[]等于[NSArray array]

所以[@[] mutableCopy]创建一个空的不可变对象,然后创建它的可变副本。我认为你不能降低效率。

于 2012-11-28T14:12:10.507 回答
0

第一个@[]是创建 Array 的简写,例如以下两个元素的数组:

NSArray *array = @[ @"First", @"Second"];

第二个@{}创建一个字典,例如:

NSDictionary *dictionary = @{
    @"first" : someValue,
    @"second" : someValue,
};
于 2012-11-28T14:15:33.917 回答