ビュー コントローラの init メソッドと viewDidLoad タイプのメソッドに含まれるコードの種類 (オブジェクトの割り当て、UI 要素の設定、ネットワーク呼び出しなど) の違いに関する一般的なガイドラインは何ですか?
1 に答える
Init => ViewController を初期化するために at/use を呼び出し、 UIViewController
ビューではなくのみを初期化します
ViewDidLoad => load ビューで呼び出し/使用 , このメソッド gest は、ペン先がロードされた後に呼び出されます
システムはメモリを節約するためにビューをアンロードできますが、UIViewController はそのままになります。UIViewController は既に初期化されているため、init メソッドで設定されたプロパティは再度適用されません。
iOS アプリケーションで変数を初期化することは、どのプロジェクトでも直面することです。変数を初期化する適切な場所を選択するのは難しい場合があります。最近、再現が難しい問題に直面し、viewDidLoad メソッドで初期化されたいくつかの変数を変更しましたが、それらが変更されていることを理解できませんでした。
ビューコントローラーで変数を初期化するために使用できるメソッドは次のとおりです。 - init - viewDidLoad - viewWillAppear - viewDidAppear
私の要点を説明するために、Tab Bar Application テンプレートを使用して新しいプロジェクトを開始しました。両方のビュー コントローラーの viewDidLoad メソッドにログ ステートメントを追加しました。また、メモリ警告を表示するいくつかの画像を初期化するボタンを2番目のView Controllerに追加しました。
いくつかのステートメントをログに記録した後、次の結論に達しました。
15:11:40.077 testblog2[4865:707] FirstViewController viewdidload
15:11:56.720 testblog2[4865:707] SecondViewController viewDidLoad
15:12:05.710 testblog2[4865:707] Pressed loading images button
15:12:19.025 testblog2[4865:707] Received memory warning. Level=1
15:12:21.272 testblog2[4865:707] SecondViewController didReceiveMemoryWarning
=> 最初のタブに変更中
15:12:30.822 testblog2[4865:707] FirstViewController viewdidload
viewDidLoad メソッドで変数を初期化する場合、メモリ警告を受け取った後にこれらの変数が再初期化される可能性があることに注意してください。Cocoa はビューを削除し、その特定のビュー コントローラーに移動すると、viewDidLoad メソッドが再びトリガーされます。