その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

初回起動の判定方法

初回起動時だけポップアップを出すとか、特定のAPIをコールするとかやりたい場合に、NSUserDefaultsに値をセットする以外のエレガントな方法があるんじゃないか(僕の知らないそれ用のメソッドとかあるかもしれない)とふと思い立ち、検索してみました。


で、stackoverflowにそれっぽいQAがありました。


the quickest easiest way to detect first launch


最も多くの賛同を集めていた回答を見てみると

// -applicationDidFinishLaunching:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];
// to check it:
[[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"];
// -applicationWillTerminate:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];

と、やっぱりNSUserDefaultsに何らかの値を格納しといて判別するのが妥当なようです。


(上記はiOS4より前に書かれた回答なので、その後、applicationWillResignActiveとapplicationWillTerminate両方でfirstLaunchをNOにセットするようにした方がいいよ、というコメントもついています。)