私は&で構成されるUINavigationController
オブジェクト ( という名前) を持っています。私の iPad アプリは、サブクラス ( という名前) をロードすることから始まり、その上にモーダルに表示します (これは、AppDelegate のメソッドで次のように行われます:LoginNav
ViewController1
ViewController2
UISplitViewController
mainSplitViewController
LoginNav
didFinishLaunchingWithOptions
[self.mainSplitViewController presentModalViewController:LoginNav animated:YES];
)。
ViewController1
が表示されたら、その中の a をタップUIButton
して を押しますViewController2
。作業が終了したら、その中ViewController2
の a をタップしUIButton
て呼び出し、ビュー コントローラーと表示コンテンツの両方で[self.navigationController dismissModalViewControllerAnimated:YES];
閉じます。LoginNav
mainSplitViewController's
どちらにも& withステートメントdealloc
の両方にメソッドがあり、一度却下されると決して解雇されませんが、&を実行した直後に両方を発射します。ViewController1
ViewController2
NSLog
loginNav
NSLogs
[self.navigationController.viewControllers objectAtIndex:0] release];
[self.navigationController.viewControllers objectAtIndex:1] release];
[self.navigationController dismissModalViewControllerAnimated:YES];
NSLogs
上記の 2 つのリリース ステートメントをコメント アウトしてから、Allocations
楽器を起動し、アプリを再度起動して、上記のようにプッシュしてから閉じ、列 (All Allocations value ) を見て、それはのViewController2
却下の直後でした。次に、この手順を実行しました。繰り返しますが、この場合は 2 つの release ステートメントを使用して、列の値を正確に取得しました。loginNav
Live Bytes
6.9 MB
loginNav
6.9 MB
Live Bytes
2 つの質問:
1) &のdealloc
メソッドは、それらを保持しているナビゲーション コントローラが破棄された後に起動されないのはなぜですか? これらのView Controllerを解放するために上記の2つのリリースステートメントを実行するのは正しいですか?ViewController1
ViewController2
LoginNav
2) なぜ解放ViewController1
&ViewController2
はメモリを解放しないのですか?
ps単一の変数はありません(またはIBOutlet)
両方でメモリに保持されViewController1
& ViewController2
、両方ですべてが解放されます。