親コントローラーが1つ、ビューコントローラーが1つあります。iPhoneSDKが提供するContainmentAPIを活用するためのaddChildViewController
and関数を正常に実行しました。transitionFromViewController
しかし、実際にView Controllerをこれらの関数に渡す前に、いくつか質問があります。
質問1:ParentVCViewDidLoad
メソッドでは、次を使用して4つの子ビューコントローラーすべてをインスタンス化する必要があります
UIViewController* child = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
また self.myViewController = [[MyViewController alloc] init];
質問2:最初に4つの子ビューすべてをインスタンス化しないと仮定すると...を使用して遷移を実行する前に、をViewDidLoad
使用して新しい子を追加するたびに、追加したい子VCをインスタンス化する必要がありますか?addChildViewController
transitionFromViewController
質問3:質問1および/または質問2の回答が「はい」であるという条件の下で、メモリ管理について何をしなければならないか。質問1の場合、子VCから親VCに戻ると、4つの子ビューコントローラーの新しいオブジェクトが作成されることを意味しているようですが、正しいですか?質問2を見ると、トランジションが行われることがよくありますが、そのたびに子ViewControllerオブジェクトの新しいコピーが作成されるようです。本質的に、このアプリは、親と子の間、および子と子のビューの間でいくつかの遷移が発生した後、非常に肥大化する可能性があります。
質問4:transitionFromViewController
呼び出されたとき、記憶の中で何が起こっているのですか?親子遷移で親VCはどうなりますか?子-子遷移で子VCはどうなりますか?
更新:この特定のチュートリアルからの次の引用は、私の懸念のいくつかを参照しているようです(強調が追加されました):
呼び出し
self.storyboard
から設定されていないことに注意してください。init
現時点では、この初期化コードを配置するのに最適な場所はありません。1つのオプションはオーバーライドすることsetStoryboard:
で、もう1つは。ですviewDidLoad
。両方のオプションの問題は、 ViewControllerが2回インスタンス化されないように呼び出しを保護する必要があることです。addChildViewController: