Какой тип объекта создает @[obj1, obj2]?

Я наткнулся на следующее:

NSArray *array = @[object1, object2];

Кажется, это создает NSArray, но является ли этот экземпляр массива автоматически выпущенным объектом, или я должен освободить его?

2 ответа

Решение

Это новый литерал коллекции, доступный в компиляторе, который поставляется с xcode 4.4 и выше

@[object1, object2];

эквивалентно

[NSArray arrayWithObjects:object1, object2, nil];

так что да, это объект с автоматическим освобождением, если вам нужно сохранить его, вы можете сделать

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

этот вопрос имеет хорошее описание всех новых литералов

Это литерал нового компилятора llvm для создания массива. Компилятор меняет это на:

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

Таким образом, он возвращает автоматически выпущенный объект.

Поиск Google вывел дополнительную информацию:

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

Другие вопросы по тегам