2013-02-22 91 views
0

我正在嘗試開發一個iPhone應用程序(演示項目),使用可以將多種照片效果應用於圖像的objective-C。在iPhone中實現撤銷重做的最佳實踐

應用程序啓動並運行,但我想實現一個「撤銷」和「重做」功能的用戶界面。我已經成功編寫了一層撤消重做,即向前或向後輕鬆一步。但是,包含多級撤消和重做操作時,這個概念會變得複雜。當用戶撤銷一系列步驟然後分支到做其他事情時,它變得特別模糊。我試圖拯救的國家越多,我就越變得迷惑。

我想知道是否有實施這種行爲的標準最佳實踐。我應該使用的任何架構或框架?這樣做的普遍接受程序是什麼?任何一般的建議,精簡這種方法將不勝感激。

請幫助。

+1

嘗試在你的應用中實施歸檔和未歸檔的概念... – 2013-02-22 05:22:41

+0

如何複雜,佔用大量內存是你的應用程序?你可以實現一個堆棧,並使用push/pop範例向前和向後移動。 – Bergasms 2013-02-22 05:25:20

+0

您是否建議表示應用效果的存檔字符串或將圖像存檔爲對象本身?我想過......但感覺像第一種方法可能有點難以解碼和管理,第二種方法會爲內存帶來災難。但是,如果不嘗試這一點,我不能確定。不過,謝謝你的建議。 – metsburg 2013-02-22 05:32:47

回答

1

這一切都取決於你如何處理你的形象。

如果您正在使用您可以使用NSUndoManager,在那裏你可以跟蹤圖像處理的圖像播放。

否則,您可以跟蹤的動作陣列的圖像上進行的,這是不太優選。

但一切都取決於你的需求以及你如何處理你的形象,

重要的事情要被照顧的是在這些類型的行爲你的記憶。

如果你想重用你的行動,當你下次加載您的應用程序,你可以使用NSKeyArchiever。

+0

偉大的答案每個upvote nahi kruga:P – Bajaj 2013-02-22 05:43:37

+0

不,我不想重用我的行動在下一次加載時,NSUndoManager聽起來像是一個不錯的選擇,我會開始探索這個......但是我必須說一旦一系列效果被應用到圖像上,沒有其他功能可以降低效果,所以,據我所知,我必須爲我應用的每一步管理一個緩衝區視圖,對嗎?糾正我,如果我錯了......但是這可能會給內存帶來相當大的壓力 – metsburg 2013-02-22 05:46:34

+0

您是否應用了新的效果在修改後的圖像/每​​個動作使用原始圖像? – DivineDesert 2013-02-22 05:48:20