![](/img/trans.png)
[英]How to save Application State using NSUserDefaults in iPhone?
[英]Advantages of using NSUserDefaults to save game settings/state?
使用NSUserDefaults來保存游戲狀態/設置而不是在普通C中創建二進制文件有什么好處嗎?
專門針對iOS游戲。
NSUserDefaults的最大優點是您不必擔心實際寫入“磁盤” - 在“適當的時間”自動調用-synchronize
,其中包括應用程序后台(如果支持多任務)或終止(如果多任務處理是不支持,或者您設置UIApplicationExitsOnSuspend或其他任何名稱)。 這意味着您可以更頻繁地更新NSUserDefaults而無需太多開銷。
缺點是我很確定整個東西被加載到內存中並且寫入涉及寫入整個文件(我認為它甚至寫入臨時文件然后進行重命名),因此它不適合存儲大量的,不經常的 - 改變blob(例如照片)。
除非你保存的游戲很大,否則我會用NSUserDefaults做一些非常簡單的事情,主要是因為它避免了你必須跟蹤一堆文件。
編輯:有一個NSUserDefaults的潛在的主要缺點是不能當保存應用程序崩潰,所以你可能想要明確地-synchronize
偶爾,這取決於你的應用程序如何crashy是。 這對開發人員來說尤其明顯,因為在Xcode中按“停止”(或在調試時拔掉手機)實際上是一次崩潰!
NSUserDefaults
是適合設置的位置,但可能無法保存游戲。
優點是你可以獲得內存緩存和幾十年的穩定性。 缺點是你可以放在用戶默認文件中的相當有限(對象必須是plist
友好的,即字符串,數字,數據,日期,字典和數組。)同樣,在NSUserDefaults
保存游戲狀態會使處理多個保存游戲變得更加困難。
我建議你構建你的邏輯類,以便可以對任意字節流進行序列化/反序列化(最簡單的方法是在你的各種游戲狀態類上實現NSCoding
。)然后你可以只將文件轉儲到磁盤任意位置(在例如“quicksave”復制NSUserDefaults
,充滿游戲存檔的列表中的[yourapp]/Documents/
。編碼的任務/解碼實際上並不強烈存儲/檢索任務相關聯,如令人驚訝,因為這可能是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.