Копирует ли NSArray объекты?
-
12-09-2019 - |
Вопрос
Когда я делаю NSArray
используя +[NSArray arrayWithObjects:]
, он копирует эти объекты?Если я освобожу объекты после добавления их в массив, возникнут ли у меня проблемы?
Решение
Нет, он их не копирует.Оно сохраняет их.Да, вы можете безопасно освободить объекты после добавления их в массив.
Документы, как всегда, сформулируйте это очень четко:
Массивы поддерживают строгие ссылки на свое содержимое — в среде управляемой памяти каждый объект получает сообщение сохранения перед добавлением его идентификатора в массив и сообщение освобождения, когда он удаляется из массива или когда массив освобождается.Если вам нужна коллекция с другой семантикой владения объектом, рассмотрите возможность использования вместо этого ссылки CFArray, NSPointerArray или NSHashTable.