べるべる研究日誌

なんでもやる系エンジニアの日々

iOSでの画面遷移におけるデータ共有

昔ちょこちょこ自作のちょっとしたアプリを作った時にいろいろ試行錯誤してたけど、iOSゆとりプログラミングのすすめに解法の一例があったのでメモ。

AppDelegate.h

@property (strong, nonatomic) NSMutableDictionary* toybox;

AppDelegate.m

@synthesize toybox;
...
    toybox = [[NSMutableDictionary alloc] init ];    
    [toybox setObject:@"ほげほげ1" forKey:@"Key1"];
    [toybox setObject:@"ほげほげ2" forKey:@"Key2"];

ViewController.m

    AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
    NSString* itemStr = [appDelegate.toybox objectForKey:@"Key1"];
    NSLog(@"Key1: %@",itemStr);

こんな感じで使う。元サイトには@synthesizeが抜けてる希ガス

グローバル変数はバグの元だから極力使わない方が...とか普段は言ってるけど、iPhoneくらいだと画面単位の遷移だし後ろでタスク動かす事も少ないからこんなふうに使うほうが一番効率がいい気がする。

でもバックグラウンドに入って復帰した時とか値はどうなるんだろう...。ま、うまくいかなくても遷移時にだけ使って必要な値はちゃんと保存しておけってことだよね。