據我瞭解,在UIDocument
類可以跟蹤對文件的未保存的更改,甚至鎖定該文件,因此它不能由一個以上的人被檢查出。但是如果用戶強制退出應用程序而不保存或應用程序崩潰會發生什麼?如何將未保存的更改恢復到UIDocument
,以便在應用程序重新啓動時重新打開UIDocument
以及最近未保存的更改?我需要在更改每個文件之前製作重複副本,並更改臨時副本,直到用戶保存更改爲止?還是Apple提供了一個更簡單的實現?我還考慮過編碼並將Data
文件內容和每個UIDocument
實例的undoManager
定期存儲爲緩存。這會起作用嗎?UIDocument恢復未保存的更改在應用程序崩潰/強制退出
5
A
回答
1
的UIDocument
和UIManagedDocument
做AUTOMAGIC改變尊重其他系統約束(例如跟蹤(調用一個函數,其中文件是否改變了你可以返回true),並保存到磁盤的變化:如果另一個進程正在嘗試讀取文件)。 如果您不覆蓋基類方法,Apple會採用非常安全的方式進行保存。當保存操作被觸發時,Apple保存到臨時文件,如果保存成功,則完成原始文件的快速重命名和刪除(IIRC重命名/刪除是原子的,或接近原子的)。您可以假定保存操作不會在文件系統中留下99.99%的損壞文件。
蘋果觸發保存在特定點後臺操作(如:基於時間,程序切換到後臺,先於其他進程試圖訪問該文件,...),但我找不到任何明確的說法發生了什麼當應用程序被強制退出時。
這就是說,邏輯和常識告訴我,如果你強制退出一個應用程序,當前文件狀態不能保存。即使手動實施強制退出的「快速保存」在技術上可能也不可行。定期的背景保存操作(如UIDocument已經這樣做)可能是最好的策略。
關於保存撤消管理器的狀態:這將是相同的技術問題與節約UIDocument。沒有事件或其他任何事情告訴應用程序即將被強制退出。
你應該閱讀Apple Documentation。它很長,但它更詳細地解釋了這個過程。我的建議是,實施蘋果強加的戰略。這些策略非常完善,適用於Apple生態系統中的許多應用程序以及用戶。最重要的是,您可以降低實施成本並實現自動化改進(當Apple更新其實施時)。
相關問題
- 1. 的Mac Kiosk模式API - 強制退出應用程序崩潰
- 2. 應用程序在恢復時崩潰
- 3. 應用程序中的崩潰恢復
- 4. 如何恢復下載,當應用程序強制退出?
- 5. 在應用程序崩潰時退出
- 6. 應用程序與SearchView崩潰恢復
- 7. BulletSharp崩潰的應用程序退出
- 8. 退出時JavaFx應用程序崩潰
- 9. 應用程序崩潰退出
- 10. 保存對UIManagedObjectDocument的更改時,iPhone應用程序崩潰
- 11. 強制C++應用程序崩潰
- 12. iCloud保存數據隨着UIDocument崩潰
- 13. 崩潰在退出應用
- 14. 恢復未保存的更改 - Eclipse
- 15. vim在保存和退出時崩潰
- 16. 退出Qt程序崩潰
- 17. 崩潰恢復Android應用
- 18. 保存UIManagedDocument時應用程序崩潰
- 19. 應用程序在強制從設備退出應用程序後崩潰iOS 10
- 20. 如何強制Java進程在熱點崩潰時退出
- 21. 應用程序崩潰取向更改
- 22. 應用程序配置更改崩潰
- 23. 在Windows上的PyQt4應用程序正在崩潰退出
- 24. 應用程序狀態保存/恢復
- 25. 程序在退出時崩潰
- 26. C++/SFML程序在退出時崩潰
- 27. 程序在退出時崩潰
- 28. 使用程序內存恢復更改
- 29. Cordova(PhoneGap)InAppBrowser在應用程序從後臺恢復時崩潰
- 30. 如何防止應用程序/遊戲在恢復後崩潰
你的建議aside-我會如何讓用戶直到他們選擇保存有文檔未保存的更改,同時還恢復任何未保存的更改,就像字確實,如果電腦關機? –