使用NSUserDefaults检测应用程序的初始启动

dar*_*sky 1 iphone cocoa-touch objective-c nsuserdefaults ios

参考以下问题:iPhone:如何检测首次启动应用程序的时间?

当我查找NSUserDefaults苹果引用时,它表示registerDefaults不会将数据存储到磁盘上.在上面的问题中,应用程序firstLaunchYES在每次启动时注册该值.因此,每次启动应用程序时,都会firstLaunch被覆盖YES,因此应用程序将始终认为这是应用程序的首次启动.

我对吗?

编辑:

在完成上面的教程所说的之后,无论如何它并不总是有效.我继续从Xcode重新启动,并1在第一次启动时继续打印出bool值.

Hol*_*nce 5

registerDefaults:不会覆盖默认值中已有的内容,但会设置默认值为defaults.因此,如果缺少默认值,则使用默认默认值.令人困惑,不是吗?

如果您从未在密钥下写入值FirstLaunch,那么boolForKey:@"FirstLaunch"将使用来自的值registerDefaults:.但是,如果您之前执行过setBool:NO forKey:@"FirstLaunch",之后再次请求它,则不使用boolForKey:registerDefaults:.