AppDelegateへのアクセス

最近わけあってObjective-Cを書くことになってしまっているので、備忘録程度にメモ。

AppDelegateはアプリケーションの動作を引き受けるクラス。
起動時から終了時まで一挙に担う。
そこで、複数クラスからアクセスする可能性のあるオブジェクトやメソッドはAppDelegateにおいておくと使いやすい。

メンバ変数へのアクセス

AppDelegateのNSObject objにアクセスしたいとする。

AppDelegate.h

@interface AppDelegate {
    NSObject obj;
}
@property (nonatomic, assign) 

まずはAppDelegate.mに次のコードを追加。

@synthesize obj;

そして、アクセスするクラスでAppDelegate.hをインクルードして

((AppDelegate*)[[UIApplication sharedApplication] delegate]).obj

でアクセスできます。

メソッドへのアクセス

AppDelegateのhogeというメソッドを呼びたいなら

appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate hoge];

だけでOKです。引数も勿論渡せます。