2009-06-12 84 views
2

我已经创建了UIImageView的一个子类,我正在处理子对象本身内的对象的触摸。iPhone - 保存UIImageView状态

现在,当用户即将退出应用程序,我想保存图像的状态。由于图像上可能发生了多次转换(我将所有转换保存在数组中),我希望能够将这些对象保存在applicationWillTerminate中。

有什么办法可以保存这些对象吗?还是我必须单独保存一切?如果我这样做,如何保存在图像视图对象上发生的所有转换,直到用户退出?

谢谢。

回答

1

UIImageView符合NSCoding。您需要在UIImageView子类中实现encodeWithCoder:以允许其序列化。您使用传递的编码器来串行化重要的成员变量,在这种情况下,您的图像将调用超类'encodeWithCoder:

你在initWithCoder:中做了相反的处理,你已经回到了原始状态。

如果您的图像是UIImage的实例,您将有更多工作要做,因为它不符合NSCoding。根据您的需求,您可能会将图像数据转换为NSData对象并进行编码。这里有一个如何可以做到这一点的例子:http://www.nixwire.com/getting-uiimage-to-work-with-nscoding-encodewithcoder/

看一看档案和序列化编程指南可可:http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Archiving/Archiving.html

+0

非常感谢。我面临另一个问题。 encodeWithCoder在我的UIImageView子类中发出异常。它会抛出错误[UIImage encodeWithCoder:]无效的方法。但我没有在UIImage对象上调用encodeWithCoder,只在UIImageView和NSMutableDictionary上调用。有任何想法吗? – lostInTransit 2009-06-13 07:35:38