С NSArray ссылок на объект я явно выпускаю все объекты в массиве или просто самом массиве?

Нет, но если хранилище является публичным, другие могут его разветвить, закрепить за своим собственным разветвлением.

Затем они могут попросить вас перенести некоторые изменения в их форке в ваш репозиторий с помощью запроса на извлечение.

44
задан Rich 20 May 2009 в 01:59
поделиться

3 ответа

Вы можете вызвать release непосредственно в NSArray . Реализация NSArray позаботится об отправке релиза всем объектам, хранящимся в массиве.

55
ответ дан 26 November 2019 в 22:12
поделиться

NSArray сохраняет объекты при их добавлении и освобождает их, когда они удаляются или освобождается массив. Имейте это в виду, это концепция «владения», на которой построено управление сохранением / освобождением памяти. То же самое и с объектом, которому принадлежит массив: если он также сохранил объекты в массиве, вам нужно будет отправить им другое сообщение о выпуске в вашей реализации освобождения. В противном случае и если никакие другие объекты не сохранили их, они будут освобождены, как только массив освободит их.

10
ответ дан 26 November 2019 в 22:12
поделиться

У вас должна быть возможность просто освободить NSArray, и он освободит все свои объекты, независимо от того, есть ли у вас другие ссылки на них. Если у вас есть объект-экземпляр, который также существует в NSArray, вам придется освободить этот объект явно - простое освобождение NSArray может не освободить объект вне контекста массива.

1
ответ дан 26 November 2019 в 22:12
поделиться