1

ARC を使用してモーダルビューコントローラーのメモリを効果的に解放するにはどうすればよいですか?

この件に関するトピックをいくつか見ましたが、実際には、モーダル ビュー コントローラーを扱う際によくある問題と思われるものに対する答えは見つかりませんでした。

viewcontroller1 がモーダル viewcontroller2 を提示するサンプル アプリケーションを作成しました。(viewcontroller1から)viewcontroller2を閉じると、メモリが解放されません!:( (以下のメモリ ログを参照)

奇妙な:viewcontroller1にはviewcontroller2の強い参照はなく、viewcontroller2のdeallocは実際に呼び出されます...

ビューコントローラーは、presentModalViewController/dismissModalViewControllerAnimated を使用して表示/破棄されます

私のメモリ使用量を参照してください:

ViewController1 表示 : 7.41 Mb 使用量
--ACTION :
ViewController2 を表示 -- ViewController2 表示 : 8.11 Mb 使用量
--ACTION : ViewController2
を非表示 -- ViewController1 表示 : 8.06 Mb 使用量
--ACTION : ViewController2 を表示 --
ViewController2 表示 : 8.11 Mb 使用量
-- ACTION: Dismiss ViewController2--
ViewController1 Displayed: 8.06 Mb Usage
--ACTION: Show ViewController2--
ViewController2 Displayed: 8.11 Mb Usage
--ACTION: Dismiss ViewController2--
ViewController1 Displayed: 8.06 Mb Usage

ありがとう

4

1 に答える 1

0

通常、viewcontroller2 の dealloc は、ビュー コントローラー自体ではなく、そのクラスに割り当てられた変数とリソースを解放します。また、ARC を使用する場合、メモリは自動的に処理され、必要なときに解放されない場合があります。ARC を使用しない場合は、メモリを完全に管理できます。これは、今日でもほとんどの人が行っていることです。オブジェクトが自動的に解放されることを心配しないでください。それ以外の場合は、java で使用される finalizer() メソッドのようなものを検索して、ガベージ コレクションのためにオブジェクトを送信できます (ただし、ARC はガベージ コレクションよりも diff です)。

于 2012-09-29T18:06:47.923 に答える