Итак, мой код выглядит следующим образом:
ArticleControllerController *ac = [[ArticleControllerController alloc] init];
ac.categoryIndex = idx;
NSLog(@"acc retain: %d", [ac retainCount]);
[app.nav pushViewController:ac animated:NO];
NSLog(@"acc retain: %d", [ac retainCount]);
[ac release];
NSLog(@"acc retain: %d", [ac retainCount]);
И я получаю:
[2649:207] acc retain: 1
[2649:207] acc retain: 3
[2649:207] acc retain: 2
Как устранить этот беспорядок?Я не понимаю, что я делаю неправильно, и эта часть иногда вызывает сбой приложения из-за нехватки памяти.
Редактирование: связанная проблема.
Таким образом, ситуация такая же, как определено выше, нопроблема в том, что метод dealloc ArticleControllerController никогда не вызывается.
Дополнительный код:
- (void) navigateToNewsCategoryByIndex:(int)idx {
[app.nav popViewControllerAnimated:NO];
currentMode = MODE_ARTICLE;
ArticleControllerController *ac = [[ArticleControllerController alloc] init];
ac.categoryIndex = idx;
[app.nav pushViewController:ac animated:NO];
[ac release];
return ;
}
Если этот метод повторяется несколько раз, ArticleControllerController создает огромное количество различных интерфейсовэлементы, но его метод dealloc никогда не освобождает их (количество сохранений никогда не падает до нуля), поэтому я думаю, что здесь кроется проблема сбоя памяти, которую я пытаюсь решить в течение пары дней.
Что случилось стот?Могу ли я сделать что-то еще, чтобы решить эту проблему?