iPhone アプリケーションにメモリの問題があり、何が起こっているのかわかりません。
そのため、UIViewController から別の UIViewController に移行すると、アプリケーションのメモリ使用量が継続的に増加することがわかりました。「割り当て」ツールの「マーク ヒープ」ツールを使用しましたが、割り当てが解除されていないオブジェクトは UIViewControllers だけであることが判明しました。
より具体的に言うと、2 つの UIViewController を取得しました。1 つ目は PuzzleViewController という名前で、2 つ目は Options という名前です。アプリが起動すると、PuzzleViewController が表示されます。ここでヒープをマークしてベースラインを設定し、その後、オプション UIViewController を表示する [オプション] ボタンを押します。最初のものに戻り、再びヒープをマークします。これらの手順を何度も繰り返した後 (20 回程度 :D)、Heapshot ごとに約 22 個のオブジェクトが生き残っていることがわかりました。これらのオブジェクトのうちの 2 つは、私の UIViewControllers のインスタンスです。
何が起こっているのか、まったくわかりません。
Options UIViewController に切り替える方法は次のとおりです。
- (IBAction) onOptionsButton: (id) sender
{
Options *viewController = [[Options alloc] init];
[self presentModalViewController:viewController animated:YES];
[viewController release];
}
そして、PuzzleViewController に戻る方法は次のとおりです。
- (IBAction) onMainMenu:(id) sender
{
PuzzleViewController *modalView = [[PuzzleViewController alloc] init];
[self presentModalViewController:modalView animated:YES];
[modalView release];
}
viewDidUnload 関数は適切に呼び出されますが、dealloc 関数は呼び出されません。
ありがとう、アンドレイ