使用NSUserDefaults保存游戏设置/状态的优点?

Ran*_*dom 4 iphone objective-c ipad ios

使用NSUserDefaults来保存游戏状态/设置而不是在普通C中创建二进制文件有什么好处吗?

专门针对iOS游戏.

tc.*_*tc. 5

NSUserDefaults的最大优点是您不必担心实际写入"磁盘" - -synchronize在"适当的时间"自动调用,包括应用程序后台(如果支持多任务)或终止(如果不支持多任务处理) ,或者设置UIApplicationExitsOnSuspend或其他任何名称).这意味着您可以更频繁地更新NSUserDefaults而无需太多开销.

缺点是我很确定整个东西被加载到内存中并且写入涉及写入整个文件(我认为它甚至写入临时文件然后进行重命名),因此它不适合存储大量的,不经常的 - 改变blob(例如照片).

除非你保存的游戏很大,否则我会用NSUserDefaults做一些非常简单的事情,主要是因为它避免了你必须跟踪一堆文件.

编辑: NSUserDefaults的一个潜在主要缺点是,当应用程序崩溃时无法保存,因此您可能仍希望明确-synchronize偶尔,具体取决于您的应用程序的崩溃程度.这对开发人员来说尤其明显,因为在Xcode中按"停止"(或在调试时拔掉手机)实际上是一次崩溃!