http://d.hatena.ne.jp/omaemona01/20111204/1322961924
iOSゆとりプログラミングのススメ
これは、勉強になるな。。
AppDelegateの中に、何でもほおりこめる辞書を作って、どこからでも、アクセス可能にする。。。か。。
#import <UIKit/UIKit.h> @class ViewController; @interface AppDelegate : UIResponder <UIApplicationDelegate> { NSMutableDictionary* toyBox; // ここになんでもしまっていいよ! } @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) ViewController *viewController; @property (strong, nonatomic) NSMutableDictionary* toyBox; @end
何でも保存して良いよ。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.toyBox = [[NSMutableDictionary alloc] init]; // お片づけ箱を確保 // 確保したら好き勝手につっこんでおk [toyBox setObject:@"お菓子の包装" forKey:@"宝物1"]; [toyBox setObject:@"アルミホイルの芯" forKey:@"宝物2"]; [toyBox setObject:@"スベスベする石" forKey:@"宝物3"]; // 中には配列でも何でもつっこめる NSMutableArray* teamArray = [NSMutableArray arrayWithObjects:@"もっさりさん", @"らんらん", @"りんりん", nil]; [toyBox setObject:teamArray forKey:@"TeamMOSA2"]; // 辞書も突っ込める NSMutableDictionary* callSignDic = [NSDictionary dictionaryWithObjectsAndKeys: @"DevSapの知恵袋", @"もっさりさん", @"もうすぐ小学生開発者", @"らんらん", @"ガジェットイーター", @"りんりん", nil]; [toyBox setObject:callSignDic forKey:@"通り名"]; (後略)
他のビューからでも、参照できる!
#import "AppDelegate.h" (中略) - (void)viewDidLoad { // AppDelegateからNSMutableDictionaryを取得して中身を取り出してみる AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate]; NSString* itemStr = [appDelegate.toyBox objectForKey:@"宝物3"]; NSLog(@"お宝:%@",itemStr); // NSMutableDictionaryの中にある配列と辞書の中身を取り出してみる NSMutableArray* memberArray = [appDelegate.toyBox objectForKey:@"TeamMOSA2"]; NSMutableDictionary* memberDic = [appDelegate.toyBox objectForKey:@"通り名"]; for( NSString* teamMember in memberArray ) { NSLog(@"%@:%@",teamMember,[memberDic objectForKey:teamMember]); } // 共有したいものはここに設定しておけば他のところでも参照できるから遠慮しないで突っ込め [appDelegate.toyBox setObject:@"ゆとりプログラミング" forKey:@"時代の潮流"];
グローバル変数みたいな物か。。