0

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 関数は呼び出されません。

ありがとう、アンドレイ

4

2 に答える 2

2

を呼び出す必要があります。再度呼び出すことも、を再作成することもdismissModalViewControllerできません。presentModalViewControllerPuzzleViewController

于 2011-03-27T12:33:21.933 に答える
0

モーダル ビュー コントローラーを閉じる

于 2011-03-27T12:48:21.057 に答える