NSArray копирует объекты? - PullRequest
15 голосов
/ 11 августа 2009

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

1 Ответ

35 голосов
/ 11 августа 2009

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

Документы , как всегда, объясняют это очень четко:

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

...