初回起動の判定方法
初回起動時だけポップアップを出すとか、特定の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にセットするようにした方がいいよ、というコメントもついています。)