したがって、私のコードは次のようになります。
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
この混乱を解決する方法は?何が間違っているのかわかりません。この部分では、メモリ不足が原因でアプリケーションがクラッシュすることがあります。
編集:関連する問題。
したがって、状況は上記で定義したものと同じですが、問題はArticleControllerControllerdeallocメソッドが呼び出されないことです。
その他のコード:
- (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メソッドはそれらを解放しません(保持カウントがゼロになることはありません)。したがって、ここに解決しようとしているメモリクラッシュの問題があると思います。今から数日。
どうしたの?これを解決するためにもっと何かできることはありますか?