我正在开发一个将图像的部分复制到该图像的其他部分的应用程序。复制的逻辑工作正常,但是当我想提供撤消功能时遇到了问题。
当前的解决方案是保存一个最多包含 5 个 UIImage 的数组,然后使用堆栈中倒数第二个对象进行还原。当使用非常大的图像时,这会导致各种内存问题。例如,该数组中可能有 5 个 5MB 的图像。
这是我目前的两个想法。
与其保存包含所有更改的全新图像,不如仅保存所做的更改,就像 Photoshop 中的图层一样。我可以将 5 层堆叠在一起,当我用完层时,合并底部的两层并创建一个新层。如果用户在一层上复制整个图像,我可能仍然会遇到问题。这是不太可能的。
像我一样保存整个图像,但将其保存到文件系统。这将保持内存空闲,但我不确定设备不断保存 5MB 图像的强度会有多大。我会将其限制为保存 5 张图像。
任何其他想法或为什么两者中的一个会比另一个更好?