2010年06月04日
Objective-Cでのグローバル変数 @ iPod touch
Twitterのiphone_dev_jpで、AppDelegateクラスを使ってグローバル変数を使う方法を質問している人が居て、その回答があり、こんな方法もあるのかと思い試してみました。
取り敢えず、GlobalVarTestと言う名前でプロジェクトを作った前提で書きます。
まずは、GlobalVarTestAppDelegate.hに変数fooを追加。
@interface GlobalVarTestAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navigationController;
NSString *foo;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) NSString *foo;
@end
次にGlobalVarTestAppDelegate.mに
@synthesize foo;
を追加します。
次は、その変数を使ってみます。適当なクラスに下記の記述をします。
GlobalVarTestAppDelegate *appDelegate = (GlobalVarTestAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.foo = @"テストです。";
更に別なクラスでは、こんな感じで呼び出して使います。
GlobalVarTestAppDelegate *appDelegate = (GlobalVarTestAppDelegate *)[[UIApplication sharedApplication] delegate];
self.myLabel.text = appDelegate.foo;
myLabelは
@property (retain,nonatomic) IBOutlet UILabel *myLabel;
として、Interface BuilderでViewにUILabelを置いて、アウトレットとしてバインドしてます。
使い方としてはこんな感じです。余計なクラスを新たに作らなくて良いのでこれは良いかも。沢山グローバル変数を使いたい場合は、AppDelegateファイルに記述が増えて、他の方法がよい気もしますが、取り敢えずって場合には良いと思います。
自分の場合は、シングルトン(インスタンスが一つしか持てないクラス)を使っているのですが、これもちょっと回りくどいですからね。グローバル変数って言うよりも、グローバルな形で一塊のデータを扱いたい場合には、シングルトンなんでしょうけど。
今回のネタ元は下記のつぶやきでした。
Twitter / iphone_dev_jp: @uenno AppDelegate.hをインポート ...
>>関連リンク
関連日記
- 2010年03月16日 Adobe FLASH PLATFORM CAMP Tokyoの感想 (4183)@ Flash
- 2009年03月30日 書籍「Dynamic Objective-C」 (3535)@ iPod touch
- 2009年04月16日 The Essential Guide to iPhone Application Development for Flash Users (3196)@ iPod touch
- 2003年05月31日 Mac OS X Cocoaプログラミング (3029)@ Mac
- 2010年02月13日 CodeSign Error (3002)@ iPod touch
- 2010年05月21日 デリゲートの図 (2944)@ iPod touch
- 2010年09月17日 書籍「iPhone SDK 4 Advanced Programming」 (2891)@ 携帯電話
- 2011年05月04日 Adobe Photoshop Touch SDKとCS 5.1 (2882)@ Mac
- 2010年05月15日 Objective-Cの#importと@class (2750)@ iPod touch
- 2010年05月06日 Objective-Cに関わる言葉 (2747)@ iPod touch
- 2003年05月27日 今日もCocoa (2519)@ Mac
- 2010年10月25日 NSPredicate (2340)@ Mac
- 2012年10月13日 DoxygenのEXTRACT_LOCAL_METHODS (2116)@ Mac
- 2012年07月28日 Adobe Illustratorから形状のソースコードを書き出す (2003)@ Mac
- 2010年10月13日 悩ましいautorelease (1988)@ Mac
- 2012年08月20日 ゼロから5日でiPhoneアプリが作れる本 (1791)@ iOS
- 2014年04月05日 QBlocksはiOSアプリ開発用グラッフィック作成に便利かも? (1699)@ iOS
アマゾン広告
この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。