2013-02-22 72 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