Objective-C中的@[]和@{}是什么?

Objective-C中的@[]和@{}是什么?,objective-c,nsmutablearray,equals,nsmutabledictionary,Objective C,Nsmutablearray,Equals,Nsmutabledictionary,可能重复: 我有一个关于@[]和@{}的问题 一些代码取自互联网: self.searches = [@[] mutableCopy]; self.searchResults = [@{} mutableCopy]; @[]是否等于[NSMutableDictionary] @{}是否等于[NSMutableArray] @{}等于[NSDictionary] @[]等于[NSArray数组] 因此,[@[]mutableCopy]创建一个空的不可变对象,然后创建它的mutableCop

可能重复:

我有一个关于
@[]
@{}
的问题

一些代码取自互联网:

self.searches = [@[] mutableCopy]; 
self.searchResults = [@{} mutableCopy]; 
  • @[]
    是否等于
    [NSMutableDictionary]
  • @{}
    是否等于
    [NSMutableArray]

  • @{}
    等于
    [NSDictionary]

    @[]
    等于
    [NSArray数组]

    因此,
    [@[]mutableCopy]
    创建一个空的不可变对象,然后创建它的mutableCopy。我认为你做这件事的效率不会降低

  • 否。
    @[]
    等于
    [NSArray数组]
    [[NSArray alloc]init]
  • 否。
    @{}
    等于
    [NSDictionary dictionary]
    [[NSDictionary alloc]init]
  • (取决于上下文以及是否使用)

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


    结果与使用
    [NSMutableDictionary]
    [[NSMutableDictionary alloc]init]
    第一个@[]是创建数组的缩写,例如,以下两个元素的数组:

    NSArray *array = @[ @"First", @"Second"];
    
    第二个@{}创建字典,例如:

    NSDictionary *dictionary = @{
        @"first" : someValue,
        @"second" : someValue,
    };
    

    是 啊它正在创建一个自动释放的对象,所以答案只有在使用arc时才是正确的。我假设任何在这个时候开始使用Objective-C的人都会使用arc,但这一点很好。是的。。我是从问题中抄来的;)有一篇帖子是关于
    mutableCopy
    与simple
    alloc/init
    的性能,但我找不到它。。。