2011-12-28 3 views
0

Interface BuilderまたはStoryboardsからロードされたときにUIViewController-> UIViewで何が起こっているのかを理解しようとしていました。ストーリーボードのUIViewControllerライフサイクルとiOSでの変数の受け渡し

コントローラ間でパラメータを渡している問題の最も多くのコモンズに直面しているときに、バックグラウンドでの動作が不思議になります。

ナビゲーションコントローラを使用するストーリーボードでは、CoreDataエレメントによってロードされたテーブルビューがあり、詳細ビューを表示するために、segueメソッドで@propertyを介してNSManagedObjectIDとして次のコントローラに渡されます。 受信側のコントローラでは、存在のチェックを行い、必要に応じて完全なオブジェクトを再構築しています。

この時点で、このロジックを配置して処理するのに最適な場所はどこですか? コントローラがサーブレットと呼ばれるJava EEのバックグラウンドから来ており、パフォーマンス上の理由からサーブレットが一度初期化され、(スレッドプールによって)多くのユーザーによって共有される可能性があります。インスタンス変数を持つ @propertyがインスタンス変数であるため、同じメカニズムに入りたくないので、UIViewControllerは一度インスタンス化され、CoreDataオブジェクトはView Controllerの場合には同じままです。

答えて

0

iOSでは、各ビューコントローラは1つのビューとそのサブビューを管理します。 UISplitViewControllerを使用して2つの同一のView Controllerを同時に画面に配置したとしても、それらはView Controllerクラスの2つの別々のインスタンスになります。ストーリーボードは各Segueの新しいView Controllerをインスタンス化します(ただし、 。したがって、プロパティを使用することは完全に安全なだけでなく、期待された方法です。

+0

また、viewDidLoadメソッドで@propertyをチェックするのがベストプラクティスの一部だと思いますか? – Leonardo

+0

それはあなたが "チェックする"という意味にかかっています。 「その物件に有効な価値があることを主張する」という意味ですか?その時点で価値が無効であるべき状況がまったくない場合、私はなぜそうでないのか分かりません。一般的には行われていませんが、防衛的にプログラミングすることは通常は賢明です。ビューが表示される直前に起こる '-viewWillAppear:'でそのようなチェックを行うほうが良いかもしれません。画面上に表示する準備ができなくてはならないうちに、ビューが長く読み込まれる可能性があります。 –

関連する問題