Выпуск Objective C, авто-выпуск и типы данных

Я новичок в коде, управляемом памятью, но довольно хорошо понимаю эту идею.

Проходя мое приложение через инструмент утечки в XCode, я заметил, что мне нужно было только очистить свои пользовательские объекты, но не динамически создаваемые массивы, например, поэтому я решил, что эти типы данных автоматически высвобождаются - имеет смысл, поскольку мне нужно было только освободить массивы Я использовал в качестве свойств, которые имели (сохранить) на них.

Затем я заметил нечто странное: у меня возникла утечка в некотором массиве, инициализированном так:

NSMutableArray *removals = [NSMutableArray new];

но не похожий

NSMutableArray *removals = [NSMutableArray arrayWithCapacity:9];

Теперь причина была установлена с "новым" в том, что в нем может быть 0-99 элементов, тогда как другой, который я знал, будет всегда 9. Поскольку оба массива передаются одному и тому же методу позже на основе взаимодействия с пользователем, я либо получал утечку, если не сделал этого. отпустите в конце метода или исключение, если я это сделал!

Я изменил первый массив на

NSMutableArray *removals = [NSMutableArray arrayWithCapacity:99];

и я не получаю утечек и не должен ничего выпускать. Кто-нибудь может объяснить?

Ответы на вопрос(3)

Ваш ответ на вопрос