2

【super loadView】や【super viewDidLoad】と書くとどうなる?コードを削除しようとしましたが、スタックがオーバーフローして無限ループに入ります。誰かがなぜこれが必要なのか説明してもらえますか?

4

3 に答える 3

4

まず、をオーバーライドloadViewして独自のビューを手動で作成する場合は、スーパークラスの実装を呼び出さないでください。これは、ビューを手動で作成し、の実装によって作成されるビューの代わりにそれらを使用するためです。UIViewControllerloadview ドキュメントを参照してください。)

ただし、オーバーライドするときviewDidLoadは、実際にスーパークラスの実装を呼び出す必要があります。これは、UIViewControllerの実装が内部の簿記を行うため、スーパークラスの機能に加えてカスタムコードviewDidLoadを実行する必要があるためです。viewDidLoad

于 2012-05-01T11:10:59.730 に答える
3

スーパークラスからメソッドを呼び出します。その NSObject としましょう。これらのメソッドの名前は次のとおりです。loadView はビューをロードする NSObject メソッド、viewDidLoad はビューがロードされたことを処理する NSObject メソッドです...これらの行に沿って、ビュー コントローラのメソッド自体は「viewDidLoad」、場合によっては「loadView」です。上記を行うコードはありません...元の.mメソッドを変更できないため、カスタマイズのためだけです...

スーパークラスを見つけるには、.h ファイルに移動します。

   @interface MyViewController : MySuperClass //thats it!
于 2012-05-01T11:03:46.710 に答える
2

基礎となるクラスは、その上に UI を配置する前に、準備を整えるために独自の簿記を行う必要があります。Android では、対応するアプリは実際には、you-didn't-call-super-first 例外をスローして意図的にクラッシュします。

于 2012-05-01T11:04:24.820 に答える