Какой тип объекта создает @[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 вывел дополнительную информацию: