おことわり (2014年09月23日 追加)
現在、筆者は以下の記事にあるようなグローバル変数 (グローバルな連想配列) は影響範囲が広すぎるので使っていません。
モデルは property で定義してクラス間で渡したり、global singleton にする等しています。定数やショートカットは AppDelegate に定義して使うことがあります。
はじめに
自分用メモです。
前提
プロジェクト名は myproject とします。
ゴール
models という名前でグローバル変数をつくります。
やり方(2013年5月26日更新)
次のような感じで各ファイルを編集します。
myproject.pch(共通ヘッダー)
// Prefix header for all source files of the 'myproject' target in the 'myproject' project // ヘッダーにはセミコロンが要らないので注意! #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "AppDelegate.h" // 追加 #endif // 追加 #define app (AppDelegate *)[[UIApplication sharedApplication] delegate] // 他にもプロジェクト全体でつかいたい定数・変数があればここで定義
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) NSMutableDictionary *models; // 追加 @end
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 追加 // グローバル変数の初期化 _models = [[NSMutableDictionary alloc] init]; [_models setObject:[NSMutableArray arrayWithArray:@[@"hoge", @"fuga"] forKey:@"items"]]; }
各ViewController.m
// こんな感じで呼べるようになる! str = [[app models] objectForKey:@"items"];