Следующий метод используется для очистки журнала от его пустых страниц в конце.
// self.pages property declaratioN, this is on the header
@property(nonatomic, retain) NSMutableArray *pages;
// method that crashes
- (void)cleanup {
NSMutableArray *pagesToRemove = [[NSMutableArray alloc] init];
for (int n = [self.pages count]-1; n >= 0; n--) {
JournalPage *page = [self.pages objectAtIndex:n];
if (![page isEmpty]) {
break;
} else {
if (([self.pages count] - ([pagesToRemove count] + 1) > 2)) {
[pagesToRemove addObject:page];
} else {
break;
}
}
}
if ([pagesToRemove count] % 2 != 0) {
[pagesToRemove removeLastObject];
}
[self.pages removeObjectsInArray:pagesToRemove];
[pagesToRemove release]; // this line makes the app crash
}
Выпуск pagesToRemove
вызывает сбой.Сбой происходит также, если я удаляю [pageToRemove release]
и использую вместо этого автоматическое высвобождение, когда я выделяю / инициализирую экземпляр NSMutableArray
.
Без освобождения pageToRemove
код работает, но я вижу утечку и лязгАнализатор также видит это.
Утечка кода;если нет, то почему?