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くらいだと画面単位の遷移だし後ろでタスク動かす事も少ないからこんなふうに使うほうが一番効率がいい気がする。
でもバックグラウンドに入って復帰した時とか値はどうなるんだろう...。ま、うまくいかなくても遷移時にだけ使って必要な値はちゃんと保存しておけってことだよね。