Когда вы выделяете books
?
Я не вижу выделения в этом коде, но, вероятно, у вас оно есть до строки [books addObject:file]
, так как в противном случае вы могли бы увидеть исключение там.
Если у вас где-то есть распределение, вы можете случайно сделать что-то вроде:
books = [NSMutableArray array];
Однако это неправильный способ сделать это, поскольку это дает вам временное NSMutableArray
, и вы хотите использовать его на протяжении жизни вашего объекта. Есть несколько способов сделать это; один из них:
books = [[NSMutableArray alloc] init];
, который дает books
счет сохранения 1, и books
не будет освобожден, пока кто-то (надеюсь, вы или хороший друг) не выпустит его. Возможно, вы захотите добавить вызов к [books release];
в вашем методе dealloc
, чтобы позже очистить эту память.
Ссылка: Руководство по программированию управления памятью для какао: mem. дирекция правила