Я новичок в коде, управляемом памятью, но я хорошо понимаю эту идею.
Когда я принимал приложение через инструмент утечек в XCode, я заметил, что мне нужно было только очистить мои пользовательские объекты, но не создавать динамически созданные массивы, поэтому я решил, что эти типы данных автореализовываются - имеет смысл, поскольку мне приходилось освободите массивы, которые я использовал в качестве свойств, которые содержали (сохраняли) их.
Затем я заметил нечто особенное: я получил утечку на определенном массиве, инициализированном следующим образом:
NSMutableArray *removals = [NSMutableArray new];
но не аналогичный
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:9];
Теперь причина, по которой была настроена "новая", состоит в том, что она может содержать 0-99 элементов, тогда как другая, я знал, всегда будет 9. Поскольку оба массива передаются одному и тому же методу позже основанный на взаимодействии с пользователем, я либо получал утечку, если не был выпущен в конце метода, либо исключение, если бы я это сделал!
Я изменил первый массив на
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:99];
и я не получаю утечек и не должен ничего отпускать. Может кто-нибудь объяснить?