2

私は最近、比較的小さな iOS アプリケーションのメンテナンスを継承しました。このアプリは、外部の請負業者によって作成されたもので、ガイダンスや監督はほとんどありません。言うまでもなく、「少し」のクリーニングが必要です。すべてをやり直すかどうかを評価しています。

私が困惑したことの 1 つは、デバッガーが「アプリケーションは、アプリケーションの起動の最後にルート ビュー コントローラーを持つことが期待されている」と表示するアプリのクラッシュです。これが発生するモジュールでは、すべての UIView を調査して、それらが親で作成されていることを確認しました (addSubView はルート ビュー コントローラーを設定しますよね?) - これはすべて基本的で適切なようです。

私は XCode にかなり慣れていないので、ここで何が起こっているのかを理解するのに役立つ機能に慣れていません。たとえば、モジュールによって作成されたすべての UIView のステータスをすばやく確認/調査するにはどうすればよいですか? 変数が変更されたときに警告を受けるために変数を「監視」するにはどうすればよいですか? 一般的に、上記のような問題に取り組むために使用する最適な戦略はありますか?

少しあいまいなままで申し訳ありませんが、醜いコードの束を公開しても、問題をよりよく理解するのに役立つとは思いません:-)

4

2 に答える 2

1

この特定の問題は、アプリケーションのUIWindowが、rootViewController起動を終了するまでにそのプロパティの値を持っていない場合に発生します。アプリケーションデリゲートファイルを見てください。通常、ルートビューコントローラはそこのウィンドウに設定されています。

より一般的な質問に関しては、プログラムの実行中にプログラムの状態を検査するさまざまな方法があります。一部の情報をダンプする非常に基本的な方法は、NSLogステートメントを使用することです。Cとほぼ同じ方法で、メッセージをコンソールに出力できますprintf。アプリケーションにブレークポイントを設定し、デバッガーを使用してさまざまな変数を検査することもできます。詳細については、lldbのドキュメントを参照してください。

于 2012-09-25T16:08:58.047 に答える
0

「ぶら下がっている」UIViewがあるかどうかは、ルートView Controllerがあるかどうかとはあまり関係ありません。

代わりに、アプリのデリゲートメソッドの最後にUIWindowがあることを確認する必要があります。rootViewControllerappDidFinishLaunching

于 2012-09-25T16:10:10.233 に答える