8

関数のメカニズムがわかりませんloadView:(この関数はUIViewにあります)。

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

  • まず、iPhoneのウィンドウベースのプロジェクトを作成しました。
  • 次に、UIViewサブクラスを作成しました
  • 次に、UIViewControllerxibを使用せずにサブクラスを作成しました。
  • 最後にloadView:、3番目のステップで作成したクラスの関数で、UIViewオブジェクト(2番目のステップで作成したクラス)をUIViewControllerオブジェクトのビュー変数(3番目のステップ)として指定します。

最後のステップを省略し、ステートメントNSLog(@"test LoadView");をloadView:関数に配置すると、プロジェクトが実行されるときにステートメントNSLog(@"test LoadView");が継続的に呼び出され、結果として実行がオーバーフローします。

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

4

1 に答える 1

15

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

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

メソッドを実装するloadView:ことで、デフォルトのメモリ管理動作にフックします。メモリが不足している場合、View Controller がdidReceiveMemoryWarningメッセージを受信することがあります。デフォルトの実装では、ビューが使用されているかどうかがチェックされます。そのビューがビュー階層になく、View Controller がloadView:メソッドを実装している場合、そのビューは解放されます。後でビューが必要になったときに、loadView:メソッドを再度呼び出してビューを作成します。

なぜ使用したいのかわかりませんloadView:が、viewDidLoad:

参照 -

  1. この iPhone プログラムが -loadView を呼び出さないのはなぜですか?
  2. ロードビュー

お役に立てれば。

于 2011-10-17T03:02:23.587 に答える