質問: OS-Xのアプリをswiftで作成したいのですがViewControllerからAppDelegateに値を渡す方法がわかりません。 AppDelegateのapplicationWillTerminage(aNotification:NSNotification)に値を受け取りたいです。 AppDelegate Classで var Flag: Int? のような形で宣言してこのクラス変数を利用したいのですがViewController側でその値をセットさせる方法がわかりません。 以上、宜しくお願いします。
回答: iOSでは、`UIApplication.sharedApplication().delegate`で、`AppDelegate`のインスタンスを参照できますが、それはOS Xも同様です。 ``` NSApplication.sharedApplication().delegate as? AppDelegate ``` これで参照できます。 > > AppDelegate Classで var Flag: Int? のような形で宣言してこのクラス変数を利用したいのですが > > > Swiftは、Objective-Cとおなじく、**インスタンス変数**はあっても、**クラス変数はない**と思いましたが...... Swiftは、変数をできるだけOptional型にしないのが、ひとつのテクニックです。 Swiftの命名規則に従って、変数は小文字から始めましょう。 ``` var flag: Int = 0 ``` 初期値を与えておけば、非Optional型にすることができ、いちいち!や?をつけずに使うことができます。 **おまけ:** `AppDelegate`は、Responder Chainの経路に入っているので、`target`を`nil`にしたActionは、経路の途中にActionメソッドを記述していなければ、`AppDelegate`クラスに書いたActionメソッドで受け取ることができます。