What kind of object does @[obj1, obj2] create?

前端 未结 2 1207
心在旅途
心在旅途 2020-12-06 19:09

I came across the following:

NSArray *array = @[object1, object2];

It seems to be creating an NSArray, but is this array insta

相关标签:
2条回答
  • 2020-12-06 19:30

    It's the new llvm compiler's literal for creating an array. The compiler changes this to:

    NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];
    

    So it is returning an autoreleased object.

    A Google search brought up further info:

    http://clang.llvm.org/docs/ObjectiveCLiterals.html

    0 讨论(0)
  • 2020-12-06 19:31

    This is a new collection literal available in the compiler that ship with xcode 4.4 and above

    @[object1, object2];
    

    is equivalent to

    [NSArray arrayWithObjects:object1, object2, nil];
    

    so yes, it is an autoreleased object, if you need this to be retained, you can do

    myRetainedArray = [@[object1, object2] retain];
    

    this question has a good description of all of the new literals

    0 讨论(0)
提交回复
热议问题