NSArray копирует объекты?

Когда я создаю NSArray, используя + [NSArray arrayWithObjects:], он копирует эти объекты? Если я освобожу объекты после добавления их в массив, я столкнулся с проблемами?

Ответы

Ответ 1

Нет, он не копирует их. Он сохраняет их. Да, вы можете спокойно освободить объекты после добавления их в массив.

Документы, как всегда, прописывают это очень четко:

Массивы поддерживают сильные ссылки на их содержимое - в среде управляемой памяти, каждый объект получает сообщение сохранения до того, как его идентификатор добавляется в массив, и сообщение о выпуске, когда оно удаляется из массива или когда массив освобождается. Если вы хотите создать коллекцию с другой семантикой владения объектами, рассмотрите вместо этого ссылку на CFArray Reference, NSPointerArray или NSHashTable.