メインイベントループ
メインイベントループでは、アプリケーションは継続的に入って来るイベントを、処理してオブジェクトへ送り、その取り扱いの結果として、その外観と状態を更新します。イベントループは、すなわち実行ループです:イベント処理ループで仕事のスケジュールを設定し、実行ループに接続された様々な入力ソースからのイベントの受信を調整します。すべてのスレッドは、実行ループにアクセスできます。メインスレッドを除く、すべてのスレッドでは、実行ループを構成する必要があり、あなたのコードでマニュアルで実行されます。Cocoa アプリケーションでは、メインスレッドのための実行ループーメインイベントループーは、アプリケーション・オブジェクトによって自動的に実行されます。メインイベントループがどのようであろうと、オペレーティング·システムからイベントを受信する主要な入力ソースービューをタップするとか、キーボードを使用してテキストを入力するとかのーユーザのアクションで発生したイベントです。
アプリケーションオブジェクトを取得し、イベントを送出
アプリケーションが起動された直後、メインイベントループのためのインフラストラクチャを設定します。これは、低レベルのユーザイベントの配信を担当するそれらの基礎となるシステム·コンポーネントとの接続を確立します。アプリケーションは、メインスレッドの実行ループに設置された入力ソースを介してこれらのイベントを受信します。アプリケーションは個別に各イベントを処理する必要があるため、その到着順に、これらの低レベルイベントは、ファーストインファーストアウトのイベントキューに配置されます。
初期インターフェースが画面上に配置されると、アプリケーションはその後、外部イベントによって駆動されます。Application オブジェクトは、イベントキューの一番上のオブジェクトを取得し、イベントオブジェクト(iOS では UIEvent、 OS X 上では NSEvent) に変換し、処理するために、アプリケーション内の他のオブジェクトに送ります。イベントを送っても帰って来た場合、アプリケーションはキュー内の次のオブジェクトをフェッチし、それを送ります。アプリケーションが終了するまで、これを実行し続けます。
コアオブジェクトはイベントに応答し、ユーザーインターフェイスを描画
アプリケーションが起動されると、また、ユーザインタフェースを描画し、イベントの処理を担当しているオブジェクトのコアグループを設定します。これらのコアオブジェクトは、ウィンドウとビューの様々な種類を含みます。アプリケーション・オブジェクトが、イベント·キューからイベントを受け取ると、ユーザイベントが発生したウィンドウに送ります。ウィンドウは、そのための最も適切なハンドラであるビューにイベントを送信します。
- マルチタッチとマウスイベントの場合、ビューは、タッチまたはマウスポインタの下にあります。
- キーボード、モーション、その他のイベントの場合、ビューがファーストレスポンダです。
最初のビューがイベントを処理しない場合には、レスポンダチェーンを介して、アプリケーション内の他のビューに渡すことができます。
イベントを処理することで、ビューは多くの場合、アプリケーションの外観を変更し、アプリケーションの状態とデータを更新する一連のアクションを開始します。これらのアクションが終了すると、コントロールはアプリケーションに戻り、イベントキューから次のイベントを持って来ます。
前提条件の記事
アプリケーション・オブジェクト
レスポンダ・オブジェクト
関連記事
イベント(iOS)レスポンダ・オブジェクト
既知のディスカッション
ココアイベント処理ガイド
サンプルコードプロジェクト
(なし)