Как исправить странный счетчик удержаний (1 инициализация - 3 удержания)? + изменить: проблема dealloc

Мой код выглядит следующим образом:

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 никогда не освобождает их (счетчик удержаний никогда не падает до нуля) , так что я думаю, что здесь кроется проблема сбоя памяти, которую я пытаюсь решить в течение нескольких дней.

Что? с этим? Могу ли я сделать что-то еще, чтобы решить эту проблему?

1
задан sniurkst 11 October 2010 в 10:31
поделиться