私は&で構成されるUINavigationControllerオブジェクト ( という名前) を持っています。私の iPad アプリは、サブクラス ( という名前) をロードすることから始まり、その上にモーダルに表示します (これは、AppDelegate のメソッドで次のように行われます:LoginNavViewController1ViewController2UISplitViewControllermainSplitViewControllerLoginNavdidFinishLaunchingWithOptions
[self.mainSplitViewController presentModalViewController:LoginNav animated:YES];)。
ViewController1が表示されたら、その中の a をタップUIButtonして を押しますViewController2。作業が終了したら、その中ViewController2の a をタップしUIButtonて呼び出し、ビュー コントローラーと表示コンテンツの両方で[self.navigationController dismissModalViewControllerAnimated:YES];閉じます。LoginNavmainSplitViewController's
どちらにも& withステートメントdeallocの両方にメソッドがあり、一度却下されると決して解雇されませんが、&を実行した直後に両方を発射します。ViewController1ViewController2NSLogloginNavNSLogs[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 ステートメントを使用して、列の値を正確に取得しました。loginNavLive Bytes6.9 MBloginNav6.9 MBLive Bytes
2 つの質問:
1) &のdeallocメソッドは、それらを保持しているナビゲーション コントローラが破棄された後に起動されないのはなぜですか? これらのView Controllerを解放するために上記の2つのリリースステートメントを実行するのは正しいですか?ViewController1ViewController2LoginNav
2) なぜ解放ViewController1&ViewController2はメモリを解放しないのですか?
ps単一の変数はありません(またはIBOutlet)両方でメモリに保持されViewController1& ViewController2、両方ですべてが解放されます。