Давайте посчитаем!
1.) Вы выделяете массив утечек здесь:
NSMutableArray *list = [[NSMutableArray alloc] init];
retainCount = 1.
2.) Вы добавляете массив в другой массив здесь:
self.listChapters = [[NSArray alloc] initWithArray:[appDelegate getChapters]];
То, что делает новый массив (listChapters), сохраняет утечку вашего массива.
retainCount = 2.
3.) Вы освобождаете массив (listChapters), который содержит утечку:
[self.listChapters release];
То, что здесь делает listChapters, также освобождает все содержащиеся объекты один раз, включая ваш утечка массива. Кроме того, все ссылки на ваш текущий массив теряются после этой строки.
retainCount = 1