[iOS]UIApplicationって何?

Posted on

UIApplicationとは何?

簡単に言うと

  • アプリの親玉
    • 起動したときや、停止したときなどのイベントをキャッチして何やできる
    • 通知系や入ってる他のアプリなどOSチックなところにメッセージを送れる

Documentから

公式ドキュメントを意訳

The centralized point of control and coordination for apps running in iOS.
iOSでアプリを動かすときに操作・調整の集中管理するところ
Every iOS app has exactly one instance of UIApplication (or, very rarely, a subclass of UIApplication). When an app is launched, the system calls the UIApplicationMain(_:_:_:_:) function; among its other tasks, this function creates a Singleton UIApplication object. Thereafter you access the object by calling the shared class method.
すべてのiOSアプリは厳密に1つのUIApplicationを持ちます(とても稀にはUIApplicationのサブクラスの場合もある)
アプリが立ち上がると、システムはUIApplicationMain(_:_:_:_:)を呼び出します。他のタスクの中で、このfunctionはシングルトンのUIApplicationオブジェクトを生成します。その後、開発者はsharedクラスメソッドを呼ぶことでこのオブジェクトにアクセスできます。

A major role of your app’s application object is to handle the initial routing of incoming user events. It dispatches action messages forwarded to it by control objects (instances of the UIControl class) to appropriate target objects. The application object maintains a list of open windows (UIWindow objects) and through those can retrieve any of the app’s UIView objects.
このオブジェクトの主要な用途はユーザイベントが入ってきたときの初期のルーティンをコントロールすることです。
コントロールオブジェクト(UIControlクラスのオブジェクト)から転送されてきたアクションメッセージを適切なターゲットオブジェクトの転送します。
アプリケーションオブジェクトは開いているウィンドウ(UIWindowオブジェクト)のリストを維持し、それらを通して、アプリのUIViewオブジェクトを取得することが出います。

The UIApplication class defines a delegate that conforms to the UIApplicationDelegate protocol and must implement some of the protocol’s methods. The application object informs the delegate of significant runtime events—for example, app launch, low-memory warnings, and app termination—giving it an opportunity to respond appropriately.
このUIApplicationクラスは、UIApplicationDelegateプロトコルに従ってdelegateが定義されており、いくつかのプロトコルメソッドを必ず実装する必要がある。このアプリションオブジェクトは大量のruntimeイベントをdelegateに知らせます。例えば、アプリの起動、メモリ枯渇の警告、アプリの終了などに対して、適切に対応する機会を与えながら知らせます。


Apps can cooperatively handle a resource, such as an email or an image file, through the openURL(_:) method. For example, an app that calls this method with an email URL causes the Mail app to launch and display the message.
アプリは、協力してemailやイメージファイルなどのリソースをopenURLメソッドを通してハンドルできます。例えば、email URLと共にこのメソッドを呼び出したアプリはメールアプリを起動し、メッセージを表示することができます。


The APIs in this class allow you to manage device-specific behavior. Use your UIApplication object to do the following:
このクラスのAPIはデバイス特有の動作を管理することも可能にします。UIApplicationオブジェクトを使って、下記のようなことが出います。

Temporarily suspend incoming touch events (beginIgnoringInteractionEvents())
一時的にタッチイベントを停止する

Register for remote notifications (registerForRemoteNotifications())
リモート通知を登録する

Trigger the undo-redo UI (applicationSupportsShakeToEdit)
undo redo UIのトリガー

Determine whether there is an installed app registered to handle a URL scheme (canOpenURL(_:))
URLスキーマをハンドルするためにアプリがインストールされているか確認する

Extend the execution of the app so that it can finish a task in the background (beginBackgroundTask(expirationHandler:), beginBackgroundTask(withName:expirationHandler:))
アプリの実行を転記し、バックグラウンドでタスクを終了する

Schedule and cancel local notifications (scheduleLocalNotification(_:), cancelLocalNotification(_:))
ローカル通知をスケジュールしたりキャンセルしたりする

Coordinate the reception of remote-control events (beginReceivingRemoteControlEvents(), endReceivingRemoteControlEvents())
remote-controlイベントを調整する

Perform app-level state restoration tasks (methods in the Managing the State Restoration Behavior task group)
アプリレベルの状態復元タスク