1. ホーム
  2. ios

[解決済み] iPhone SDK: loadViewとviewDidLoadの違いは何ですか?

2022-06-05 16:49:24

質問

iPhoneアプリでビューとビューコントローラを扱う場合、loadViewとviewDidLoadの違いを説明できる方はいらっしゃいますか?

私の個人的な状況ですが、私はコードからすべてのビューを構築し、Interface Builderを使用しませんし、使用する予定もありません。

私は、loadView に init コードを追加するとき、しばしば無限スタックトレースで終わることがわかりました、したがって、私は通常 viewDidLoad ですべての子ビューの構築を行います。 完璧なものは、初期化呼び出しの簡単な図です。

ありがとうございます。

どのように解決するのですか?

私はそれをやったことがあるので、何が問題なのかを推測することができます。

私は、loadViewにinitコードを追加すると、しばしば無限スタックトレースになってしまうことを発見しました。

-loadViewでself.viewを読まないでください。 のみ を設定します。 してください。 得る ということです。

self.viewプロパティアクセサの が呼び出す -loadViewを呼び出します。これが無限の再帰性です。

AppleのInterface-Builder以前の例で示されているように、-loadViewでプログラム的にビューを構築する通常の方法は、より次のようなものです。

UIView *view = [[UIView alloc] init...];
...
[view addSubview:whatever];
[view addSubview:whatever2];
...
self.view = view;
[view release];

そして、私はあなたがIBを使わないことを責めるつもりはありません。私はInstapaperのすべてにおいてこの方法を貫いており、IBの複雑さ、インターフェースの癖、舞台裏での予想外の動作に対処するよりもずっと快適であると感じています。