关于nsmutablearray:Objective-C中的@ []和@ {}是什么?

What is @[] and @{} in Objective-C?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What are the details of"Objective-C Literals" mentioned in the Xcode 4.4 release notes?

我对EDOCX1·0和@{}有疑问。

从Internet获取的一些代码:

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

  • 不,@[]等于[NSArray array][[NSArray alloc] init]
  • EDCOX1〔0〕等于EDCX1〔1〕或EDCX1〔10〕。
  • (取决于上下文和您是否使用自动引用计数(ARC))

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

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


    @{}等于[NSDictionary dictionary]

    @[]等于[NSArray array]

    因此,[@[] mutableCopy]创建了一个空的不变对象,然后对其进行可变复制。我认为你做不到效率低的事。


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

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

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

    1
    2
    3
    4
    NSDictionary *dictionary = @{
        @"first" : someValue,
        @"second" : someValue,
    };