次のようなナビゲーションコントローラーでsetViewControllersを使用しています:
XYZController *xyz = [XYZController alloc] initWithXibName:@"XYZController"];
[myNavController setViewControllers:xyz];
[xyz release];
インストゥルメントでの割り当てを確認していますが、この関数が 5 回呼び出されて #live に 5 回表示されると、この関数がインストゥルメントで live オブジェクトを呼び出す回数が増えることがわかりました。
つまり、メモリを割り当てていることを意味します。これでメモリ割り当てを処理するにはどうすればよいですか。
編集:
RootViewController *rootController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootController];
[rootController.navigationController.navigationBar setHidden:YES];
[self.myNavController setViewControllers:nil];
[self.myNavController setViewControllers:[NSArray arrayWithObjects:navController,nil]];
[rootController release];
[navController release];
これは、アプリケーションで使用している実際のコードです。ここでの問題は、インストルメント内の rootController の生きているオブジェクトの数が、このコードの呼び出しがあるたびに常に増加することです。rootController の数が増えるだけでなく、クラス変数も解放されないため、メモリがたまってしまいます。その結果、アプリケーションのパフォーマンスが大幅に低下します。
これについてアドバイスしてください。