Похоже, вы можете просочиться по этой линии:
[[NSMutableArray alloc] initWithCapacity: totalChapters];
Если этот объект не был освобожден, то любые добавленные к нему объекты также не будут освобождены
Редактировать (потому что это слишком долго для комментария):
Инструменты сообщают вам, где была выделена память, но не почему она все еще сохраняется. Когда NSDictionary загружает содержимое файла, он должен создать объект для каждого элемента, который он загружает. Если позже кто-то найдет объект, используя objectForKey:
, retain
, и забудет release
, будет сообщено об утечке. Оператор dictionaryWithContentsOfFile
будет обвинен в этом, потому что он выполнил распределение.
Я согласен с фантомной отладкой Дона. Скорее всего, вы не выпустили старый chapterList
при повторном назначении.