私はまだARCの考え方に苦しんでいます。非常に複雑なviewControllers AとBという2つの非常に複雑なビューがあり、それぞれにそれぞれのビューで保持される多数のピクチャがあるとしましょう。議論のために、最初のViewController(A)がRAMで75 MBを占めるイメージを保持しているとしましょう。他の1つ(B)も75 MBを占有します。私のアプリの委任でARC:viewControllerをnilに設定する場合
私はそうのように私のNavigationControllerを設定します。
ViewControllerA *vcA = [[ViewControllerA alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vcA];
[navController.navigationBar setHidden:YES];
[[self window] setRootViewController:navController];
私はAからBへ切り替えると、私はViewControllerA.mにそうようにそれを実行します。
ViewControllerB *vcB = [[ViewControllerB alloc] init];
[[self navigationController] pushViewController:vcB animated:YES];
Iを私はそれをViewControllerB.mのようにする:
[[self navigationController] popToRootViewControllerAnimated:YES];
私はまだViewContr私がViewController Bにいるときの私の記憶の中のオラーA?この場合、コンパイラはいつViewControllerを解放しますか? 1つのViewControllerが使用されていないときに、1つのViewControllerをリリースしてもいいですか?
答えがわかりやすかったり、その点が完全に不明な場合は申し訳ありません。だから、どんな答えや説明も高く評価されます。
すみませんが、間違いだと思います。 ViewDidLoadとViewDidUnloadは、ビューが作成され、ビューが破棄される前(deallocの前)に呼び出されます。あなたはviewWillAppearとviewWillDisappearメソッドについて話をしたいと思っていました.WatchControllerのビューは表示/非表示になっています。最後に、それは私自身の意見ですが、コントローラーが表示されていれば、画像が一度読み込まれた方が良いでしょう。 – Martin
ビューを表示/非表示にするたびにイメージを割り当てて解放すると、すべてのビューの変更は膨大な処理になり、アプリケーションが遅くなる可能性があります。 UIKitは、不必要なロード/アンロード作業を節約するためにビューをアンロードするタイミングを知っています。 –
私はあなたに完全に同意します。私が言うことは、例えば、initWithNibName/Deallocメソッドよりも、viewDidLoad/viewDidUnloadのイメージの割り当て/解放に違いがないということです。 – Martin