2009-06-12 82 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