Имеют ли removeAllObjects и выпуск NSMutableArray одинаковые функции? - PullRequest
0 голосов
/ 02 июля 2010

Я написал следующую строку кода:

NSMutableArray *array=[[NSMutableArray alloc]init];

Это выделяет некоторую память. У меня вопрос, как мы можем позже освободить эту память, используя метод removeAllObjects или [выпуск массива]?

Оба метода имеют одинаковую функциональность?

1 Ответ

15 голосов
/ 02 июля 2010

Когда вы добавляете объект в массив, счетчик хранения объекта увеличивается на 1. Когда вы удаляете этот объект из массива, счетчик хранения уменьшается на 1, чтобы сбалансировать его.Но если вы освободите массив, все объекты автоматически получат сообщение об освобождении.Поэтому вам не нужно вызывать removeAllObjects перед освобождением массива.

Технически, эти два метода не одинаковы.Если вы вызываете removeAllObjects, массив станет пустым, и все объекты получат сообщение об освобождении, но сам массив все еще не освобожден.Массив будет освобожден при вызове release для него.

...