【iPhoneアプリ開発入門】アプリケーションの状態変化を受取るApplicationDelegate
こんにちわセイカイと言います。
iPhoneアプリ開発入門編、今回はApplicationDelegateに関しての内容です。
ApplicationDelegateの役割
そもそもApplicationDelegateってプロジェクト作ると勝手に出来ているけど何?というお話ですが、ApplicationDelegateはUIResponderクラスを継承し、UIApplicationDelegateプロトコルを実装しています。
上記より、アプリケーションの状態変化と、各種イベントを受け取ることが出来ることがわかりますのでそれぞれ説明していきます。
アプリケーションの状態変化
アプリケーションの状態変化(ライフサイクル)はUIApplicationDelegateプロトコロルで定義されたメソッドを介して受け取ります。
- 起動
- Push通知の受け取り
- 停止
- etc.
起動時の処理などは必ず書く処理ですね。
例
1 2 3 4 5 |
[sourcecode lang="swift"] func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { return true } [/sourcecode] |
これは起動時に呼ばれるメソッドです。
アプリケーションのライフサイクルメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[sourcecode lang="swift"] import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. return true } func applicationWillResignActive(application: UIApplication) { //アプリ閉じる前に呼ばれる } func applicationDidEnterBackground(application: UIApplication) { //アプリ閉じた時に呼ばれる } func applicationWillEnterForeground(application: UIApplication) { //アプリ開く前に呼ばれる } func applicationDidBecomeActive(application: UIApplication) { //アプリ開いた時に呼ばれる } func applicationWillTerminate(application: UIApplication) { //アプリ終了した時に呼ばれる } }[/sourcecode] |
のように、それぞれのタイミングで呼ばれるメソッドが決まっていますので、そのタイミングで実装したい処理を書けばOKです。
イベントの処理
継承元のUIResponderクラスはイベント処理等を定義しています。
ここでいうイベントとは、タッチやモーションの受け取り等ですね。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
[sourcecode lang="swift"]override func touchesBegan(touches: NSSet,withEvent event: UIEvent){ //タッチ開始時に呼ばれる } override func touchesMoved(touches: NSSet,withEvent event: UIEvent){ //タッチの移動時に呼ばれる } override func touchesEnded(touches: NSSet,withEvent event: UIEvent){ //タッチ終了時に呼ばれる } override func touchesCancelled(touches: NSSet,withEvent event: UIEvent){ //タッチキャンセル時に呼ばれる }[/sourcecode] |
それぞれの引数からタッチ座標等が取得できたりします。
まとめ
まとめです。
AppDelegateはアプリケーションの各種状態変化と、タッチやセンサーなどのイベントを受け取ることが出来ます。
アプリケーション全体の挙動等はこのクラスが司るイメージです。
雑な説明ですが、ざっくりイメージは掴めましたでしょうか。
詳細は、英語ですが本家のドキュメントなどを見られると良いかと思います。