Мой код выглядит следующим образом:
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
Как решить эту проблему? Я не понимаю, что я делаю неправильно, и эта часть иногда вызывает сбой приложения из-за нехватки памяти.
Изменить: связанная проблема.
Таким образом, ситуация такая же, как определено выше, но проблема в том, что ArticleControllerController dealloc метод никогда не вызывается.
Дополнительный код:
- (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 никогда не освобождает их (счетчик удержаний никогда не падает до нуля) , так что я думаю, что здесь кроется проблема сбоя памяти, которую я пытаюсь решить в течение нескольких дней.
Что? с этим? Могу ли я сделать что-то еще, чтобы решить эту проблему?