2012-03-23 12 views
1

私はiOS開発で新しくなっていますが、私はObj-Cのメモリ管理の基本に精通しています。しかし、カスタムUIViewControllerに関するAppleのドキュメントは私を少し混乱させました。カスタムUIViewControllerでのメモリ管理

したがって、私はEntryViewControllerオブジェクトの配列を格納するPagingControllerを持っています。 (これらはすべてUIViewControllerです。)これらのオブジェクトは動的にロードされ、もちろん必要に応じて解放されます。ドキュメントが述べたとおり、PagingControllerのビューは-loadViewに作成され、self.viewに格納されます。
EntryViewControllerctrl)をロードするときはいつでも[self.view addSubview:ctrl.view];に電話します。ターゲットOSが3.0でプライベート変数(_parentViewController)を変更したくないので、ctrl.parent = self;に電話する必要があります。 (parent@property(assign) PagingController *parent;のように定義される)ここで

私の質問は以下のとおりです。

  1. 私は自分自身をself.viewを解放する必要がある、またはのUIViewControllerは、そのの世話をされていますか?
  2. parent(プロパティはEntryViewController)を保持する必要がありますか?親がアンロードされると、すべての子ビューコントローラが解放されているので、無意味だと思います。
  3. -deallocメソッドの[self.view removeFromSuperview]EntryViewControllerと呼ぶ必要がありますか?ドキュメントでは、すべてのサブビューを管理する必要があるので、これが自動的に呼び出されるかどうかはわかりません。

最初はカスタムビューコントローラを作成する方法を混乱させましたか?

+1

ターゲット3.0?本当に? – jrturton

+0

この質問の正解を教えてください。私もそれを知りたいと思っています – Krrish

+0

@jrturton実際には3.2ですが、私の主張は '-addChildViewController'は5.0以降しか利用できません。私は4.xユーザーを除外したくありません。 – vbwx

答えて

0
  1. 、割り当てるためのプロパティを設定するのUIViewControllerは、そうでなければ、サイクルに
  2. ビューコントローラがビューを気にかかりますが、あなたを保持しているつもりだ、あなたが親を保持しないべきである
  3. の世話をしますあなたが保持している他のサブビューを解放する必要があります(removeFromSuperviewは必要ありません)
+0

ありがとう!私は前に保持サイクルについて読んだことがありますが、私はここで起こるかもしれない疑いがありました... – vbwx