アプリケーションデリゲートクラスは、UIResponderから継承します。
これは、デリゲートインスタンスがレスポンダチェーンに参加し、アプリケーションレベルのアクションを処理できるようにするためです。
編集:
ステップ6があるのiOS 5のとおり:アプリのデリゲートは イベントの最終的な単語を取得しますが。 iOS 5以降、アプリケーションデリゲートは UIResponderから継承され、以前はNSObjectから継承されていません。
簡潔に言うと、ビューにビューコントローラがある場合、最初に スーパービューが階層の最上部、ウィンドウまで表示されます。 からアプリケーションへ、最後にはアプリケーションの代理人へ。
可能性のあるレスポンダとしてアプリケーションデリゲートを追加することは歓迎します。私たちはめったにサブクラスUIApplicationまたは UIWindowであるため、歓迎です。しかし、 ウィンドウを作成して アプリケーション:didFinishLaunching ... delegateメソッドにrootViewControllerを追加するだけの場合、私たちは常に独自のアプリケーションデリゲートを持っています。したがって、 の場合、全体のビュー階層に が存在しない場合、レスポンダが実質的に最善の場所に戻ってしまいます。
から撮影:
https://www.cocoanetics.com/2012/09/the-amazing-responder-chain/
私は今AppDelegateが何をするかを理解すると思う:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index .html?hl = ar。しかし、AppDelegateがなぜUIResponderから継承するのかまだ分かりません。 –
外部イベントは、物理的なやりとりだけでなく、いくつかの種類があり得ることに注意してください。例えば、バックグラウンドモード(バックグラウンドに行く、他のアプリがそれを必要とするときにオーディオを止めるなど)に応答することは、「UIResponder」が管理することになっているものです。デリゲートパターンに続いて、アプリケーション自体(つまり、 'UIApplication')はそれを管理することになっていますが、適切なオブジェクト(アプリケーションデリゲート)に委譲します。 –
ありがとう、@AlejandroIván。だから適切な用語が不足していることを明らかにする。UIApplicationは各アプリケーション固有のものであるが、UIResponderはOSにまたがっている。私が間違っているなら、私を修正してください。 –