回答:
Andrewが「アプリケーションの中心」という用語を使用することで暗示される設計アプローチは、通常は避けます。つまり、中心的な場所にあまりにも多くのものを集中させないようにすべきだと思います。優れたプログラム設計では、通常、「関心領域」によって機能を分離する必要があります。
デリゲートオブジェクトは、接続先のオブジェクトが特定のイベントまたは状態に達したときに通知を受けるオブジェクトです。この場合、アプリケーションデリゲートは、UIApplicationオブジェクトが特定の状態に達したときに通知を受け取るオブジェクトです。多くの点で、これは特別な1対1のオブザーバーパターンです。
これは、AppDelegateの「関心領域」が特別なUIApplication状態を処理していることを意味します。これらのうち最も重要なものは次のとおりです。
他の機能は実際にはAppDelegateに属していないため、AppDelegateには配置しないでください。このような他の機能には、次のものがあります。
多くの人々は、これらが怠惰であるか、AppDelegateがプログラム全体を制御していると考えているため、これらをAppDelegateにまとめます。AppDelegateはアプリの懸念事項を混乱させ、スケーリングしないため、AppDelegateでの集中化は避けてください。
アプリケーションデリゲートは、アプリケーションの中心です。それは事実上あなたの「プログラムコントローラー」です。
アプリケーションデリゲートは、他のビューの作成を開始するために最も一般的に使用されるapplicationDidFinishLaunchingメッセージを含む、アプリケーションレベルのメッセージを受信するクラスです。
厳密には似ていませんが、Cocoaプログラムの「main()」ルーチンと考えることができます。
@Shivam、ありがとう。
私が理解していることから、Android appDelegate
にあるものに近いApplication
です。はviewDidLoad
、viewDidDisappear
Androidのライフサイクルに相当します。すべてのアプリケーションには、起動から着信からの割り込み、通知の表示まで、ライフサイクルがあります。これらのsystem
イベントが発生したときにコードで何か特別なことを行う必要がある場合は、メソッドをコードで記述する必要があります。
Android onPause
ではonDestroy
、onCreate
このようなシステムイベントを処理するために、コールバックメソッドを使用しています。
onPause
、onCreate
およびonDestroy
Androidの方法は、より類似しているviewDidDisappear
、viewDidLoad
iOSのビューコントローラのライフサイクルの方法。比較しなければならないのであればApplication
、Android のクラスAppDelegate
はiOS のクラスに近いと思います。
これがもう少し役立つことを願っています...
この言語を初めて使用するプログラマーは常に同じ質問をします-プログラムはメインメソッドから始まりますか?はい、あなたはこの場合正しいです。iOSアプリもメインメソッドから開始します。
あなたのメインクラスは以下の関数を呼び出します:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMainは、UIApplication
オブジェクトを作成するCocoa Touch実行ループとアプリインフラストラクチャを開始します。アプリケーションにはコンテンツが必要なので、objective-cはデリゲートを使用してこれを処理します。これがAppDelegate(のデリゲートとして機能UIApplication
)と呼ぶ理由です。そのデリゲートのオプションのメソッドのいくつかを実装し、それに応じて動作します。