まず、XCode では、Interface ビルダーを使用するときに、新しいオブジェクトを作成するときに、オブジェクトを「資産」にドラッグします。ただし、新しいクラス ファイルを手動で作成しない限り、メソッドなどを指定することはできません。
できますよ。インスペクタを使用してオブジェクトのクラスを設定するだけです。
nib オブジェクトをアウトレットまたはアクションにのみ接続できることに注意してください。ランダムなメソッドを指定することはできませんし、そうすべきではありません。キーワードIBOutlet
、IBOutletCollection
、およびの要点は、IBAction
これらのプロパティ/メソッドが nib によって使用されることをコードで宣言することです。
インターフェイスビルダーの「オブジェクト」を使用する意味はありますか?
はい、しかしめったにありません。通常、コードでオブジェクトを作成し、アウトレットをそれらに接続します。
アプリケーションのデリゲートは、アプリケーションをそのように構築する場合、MainMenu または MainWindow nib で作成したいオブジェクトの 1 つです (iOS テンプレートは何らかの理由でそれから離れて変更されています)。
テスト用に作成した最初のアプリで、ほとんどのコードを AppDelegate クラス ファイルに入れました。調査によると、AppDelegate の目的は単に起動や終了などのアプリケーション イベントを処理することです。このクラスにメソッドを入れるのは間違っていましたか?
おそらく。アプリケーションのデリゲートは、通常、NS
/UIApplicationDelegate
プロトコルに関連するビジネスのみを処理する必要があります。
反対に、ルート ビュー コントローラーをアプリケーションのデリゲートにすることが理にかなっている場合は問題ありません (また、NS
/UIApplicationDelegate
実装コードがそれほど大きくない場合)。あなたが答えなければならない質問 (そして、あなたのアプリケーションについて答えることができるのはあなただけです) は、ルート ビュー コントローラーをアプリケーションのデリゲートにするのか、それともアプリケーションのデリゲートをルート ビュー コントローラーにするのかということです。疑わしい場合は、それらを別々に保管してください。
違いはありますか?
長期的には、はい。特にアプリケーションのデリゲートのクラスでは、Big Ball of Mudクラスを作成するのは非常に簡単です。これは、明確に定義され明確に線引きされた責任を持たないクラスです。できるだけ早くダイナマイトをそのようなクラスに持って行きます。
最後に、複数のクラス ファイルを作成し、それぞれが構築されてクラスにリンクされたインターフェイスを使用して独自の機能を処理する場合、「メイン」ファイルはどうすればよいでしょうか。ほとんどの場合、「メイン」ファイルと「appdelegate」クラス ファイルはそのまま残されるように思われます。
はい。それらはボイラープレートです。
アプリケーションのデリゲートにコードをまったく記述していない場合 (または、そこに記述したものをすべて削除して、新しいより明確なクラスにした場合)、残っているのは空のメソッド本体だけであるか、まったくない場合は、アプリケーションのデリゲートを安全に削除できます。デリゲート。気が変わったら、後でいつでも再作成できます。
アプリケーション デリゲート クラスを削除する場合は、main.m ファイル (または MainMenu/MainWindow nib (ある場合)) も参照しないように変更する必要があることに注意してください。呼び出し (またはその他のコード) が存在しないクラスを参照している場合、アプリケーションはビルドされずUIApplicationMain
、MainMenu/MainWindow nib (またはその他の nib) が存在しないクラスを参照している場合はクラッシュします。 .
デリゲートが必要な場合は、アプリケーションでデリゲートを使用することは恥ずべきことではありませんが、不要な場合はデリゲートとデリゲートに使用していたクラスを削除することで、コードをそこに詰め込んだり、3 次グローバルを格納するために使用したりする将来の誘惑を排除できます。