AppDelegate の目的は何ですか? いつ使用すればよいかを知るにはどうすればよいですか? 質問する

AppDelegate の目的は何ですか? いつ使用すればよいかを知るにはどうすればよいですか? 質問する

iPhone アプリの開発を始めたばかりです。AppDelegate とカスタム クラスのどちらにデータを配置すべきか、どうすればわかりますか? AppDelegate のようなパターンを使用する Python や PHP などの他のプログラミング言語とのルールや類似点はありますか?

ベストアンサー1

私は通常、Andrew が「アプリケーションの中心」という用語を使用したときに示唆される設計アプローチを避けます。つまり、あまり多くのものを中央の場所にまとめるのは避けるべきだと思います。優れたプログラム設計では、通常、機能を「関心領域」ごとに分離します。

デリゲート オブジェクトは、接続先のオブジェクトが特定のイベントまたは状態に達したときに通知を受け取るオブジェクトです。この場合、Application Delegate は、UIApplication オブジェクトが特定の状態に達したときに通知を受け取るオブジェクトです。多くの点で、これは特殊な 1 対 1 の Observer パターンです。

これは、AppDelegate の「関心領域」が特別な UIApplication 状態の処理であることを意味します。最も重要なものは次のとおりです。

  • applicationDidFinishLaunching: - 起動時の構成と構築の処理に適しています
  • applicationWillTerminate: - 最後にクリーンアップするのに適しています

AppDelegate には本来属さない他の機能を配置しないでください。そのような他の機能には次のものが含まれます。

  • ドキュメントデータ - ドキュメントマネージャシングルトン(複数のドキュメントアプリケーションの場合)またはドキュメントシングルトン(単一のドキュメントアプリケーションの場合)が必要です。
  • ボタン/テーブル/ビュー コントローラ、ビュー デリゲート メソッド、またはその他のビュー処理 (applicationDidFinishLaunching: でのトップレベル ビューの構築を除く) - この作業は、それぞれのビュー コントローラ クラスで行う必要があります。

多くの人は、怠け者だったり、AppDelegate がプログラム全体を制御していると考えているために、これらのことを AppDelegate にまとめてしまいます。AppDelegate に集中させると、アプリ内の重要な領域がわかりにくくなり、拡張性も失われるため、避けるべきです。

おすすめ記事