在理解歸檔之前,首先要理解對象圖(object graph)的概念,對象圖就是對象之間經由指針等關系鏈接在一起形成的對象之間的關系圖。
我們需要將這個對象體系或其部分對象持久化保存到文件中,在以後某時刻從文件中恢復出來之前的對象體系,這就是持久化要達成的目標。cocoa中已經實現了兩種用於持久化的文件類型,就是nib文件和property list文件。
這兩種文件對於要持久化到文件中的對象類型都有嚴格要求,不適合用於自定義對象的持久化,而歸檔archive技術則是用於自定義對象持久化的不錯的選擇。
要支持歸檔,對象必須遵守並實現NSCoding協議,該協議有兩個方法組成。一個用於將對象的屬性歸檔到文件,而另一個用於從文件中恢復歸檔的屬性值並初始化對象的屬性。
基本數據類型NSArray, NSDictionary, NSString, NSData, NSDate, NSNumber, NSData以及相應的可變版本,大部分UIKit對象已經支持NSCoding,可以進行歸檔。