Вам нужно либо -release
или -autorelease
что угодно -retain
, +alloc
, -copy
, +allocWithZone:
или -copyWithZone:
. (И, если вы сохраняете что-то дважды, вам также нужно дважды отпустить.)
Когда объект NSMutableArray
(или NSArray
, NSSet
, или NSDictionary
и изменяемые подклассы) освобождается (освобождается счетчик достигает нуля), он освобождает все, что содержит. Когда вы добавляете объект в NSMutableArray
, массив сохраняет объект (он не копирует его, как утверждают некоторые люди).
Я настоятельно рекомендую Руководство по программированию управления памятью и вам, и кому-то , о котором вы упоминали в этом вопросе.
Надеюсь, этот ответ поможет вам и кому-то . Удачи. :)
Также включите Clang Static Analyzer в настройках сборки. Это скажет вам во время компиляции, когда произойдет утечка (и многое, многое другое). Фактически, это первое, что я всегда делаю, когда начинаю новый проект. Анализатор никогда не обманывал меня.