2011-10-17 6 views
7

loadView:の機能(この機能はUIViewにあります)の機能を理解できません。loadView:UIViewの機能iOS

私は以下のようにプロジェクトを作成しました:

  • を第一に、私はiPhoneのウィンドウベースのプロジェクトを作成しました。
  • その後、私はノーXIBで、UIViewControllerサブクラスを作成し、UIViewサブクラス
  • 次へ]を作成しました。
  • 最後に、3番目のステップで作成したクラスIのloadView:関数では、2番目のステップで作成したクラスIのUIViewオブジェクトをUIViewControllerオブジェクトのビュー変数として指定します(3番目のステップ)。

私は最後のステップを省略し、loadViewメソッドで声明NSLog(@"test LoadView");を配置する場合:機能、プロジェクトが実行されると、その後、声明NSLog(@"test LoadView");が連続的に起動され、実行の結果がオーバーフローです。

私を説明してください!ありがとうございました!

答えて

15

loadView:は、ビュープロパティがnilの場合にのみ呼び出されます。プログラムでビューを作成するときに使用します。 default:サブビューのないUIViewオブジェクトを作成します。元について -

- (void)loadView 
{ 
    UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
    [view setBackgroundColor:color]; 
    self.view = view; 
    [view release]; 
} 

loadView:メソッドを実装することにより、あなたはデフォルトのメモリ管理動作をフック。メモリが低い場合、ビューコントローラはdidReceiveMemoryWarningメッセージを受信することがあります。デフォルトの実装では、ビューが使用中かどうかを確認します。そのビューがビュー階層になく、ビュー・コントローラがloadView:メソッドを実装している場合、そのビューは解放されます。後でビューが必要になると、loadView:メソッドが再び呼び出されてビューが作成されます。

あなたがloadView:を使用したいが、あなたはviewDidLoad:

参考にちょうど同じくらい行うことができますなぜわからない - このことができます

  1. Why is this iPhone program not calling -loadView?
  2. loadView

希望。

+0

ありがとうございました!私は質問があります:ビューコントローラがビューを整理するためにnibファイルとIBOutlet変数を使用する場合、didReceiveMemoryWarningメッセージを受け取った場合は、とにかくビューを解放し、必要に応じて後でロードします。ありがとう! –

+0

はい。あなたがあなたのUI要素を 'retain'と宣言している限り。ここをクリックしてくださいhttp://stackoverflow.com/questions/1250518/what-happens-if-i-dont-retain-iboutlet –

+0

親愛なるSrikar様、私はnibファイルをIBOutlet変数に再ロードする方法を知らないそれを解放した後。また、IBOutlet変数は再読み込み時にどのような状態になりますか?ご協力いただきありがとうございます! –