Выпустит ли массив и его элементы? - PullRequest
0 голосов
/ 28 марта 2012

Я выделяю NSMutableArray и добавляю объекты, которые были alloced.Будет ли вызов release в моем массиве также освобождать элементы внутри, или я должен сначала освободить каждый элемент вручную?

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Проверьте Руководство по программированию тем .Более конкретно, раздел Arrays и раздел Array Fundamentals:

Когда массив освобождается в среде управляемой памяти, каждому элементу отправляется сообщение об освобождении.

Таким образом, если освобождение массива приводит к тому, что его счетчик хранения становится равным 0, а затем он собирается быть освобожден, в этот момент объекты получат сообщение release.В противном случае освобождение массива просто уменьшает его счетчик хранения как любой другой обычный объект.

Кроме того, когда вы помещаете объекты в массив, они получают сообщение retain, как объясняется в руководстве.

2 голосов
/ 28 марта 2012

Объекты в коллекции obj-c освобождаются, когда эта коллекция освобождена (это не то же самое, что освобождение). Так что на практике, если вы добавляете свой объект в коллекцию, коллекция управляет владением своими объектами, и вам не нужно помещать дополнительные выпуски для ее элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...