I really tried to find their difference from the iOS perspective. Adding the following to interested people:
Purpose:
Archiving is used to store graphs of objects. A complete data model can be easily archived and restored. The way Nib files work can be seen as an example for archiving.
Serialization is used to store an arbitrary hierarchy of objects.
The work of wat plist files can be seen as an example for serialization.
Differences (excerpts from the archive programming guide):
"The archive preserves the identity of each object in the graph and all the relationships that it has with all other objects on the graph."
Each object encoded in the context of calling rootObject is tracked. If the encoder is asked to encode an object more than once, the encoder encodes a link to the first encoding instead of encoding the object again.
"Serialization only stores the values of objects and their position in the hierarchy. Multiple references to the same value object can lead to several objects during deserialization. Object variability is not supported."
Differences in implementation:
Any object that implements the NSCoding protocol can be archived where only instances of NSArray, NSDictionary, NSString, NSDate, NSNumber and NSData (and some of their subclasses) can be serialized. The contents of array and dictionary objects should also contain only objects from these several classes.
When to use:
property lists (serialization) should be used for data that consists mainly of strings and numbers. They are very inefficient when used with large blocks of binary data.
It is enough to archive objects other than plist objects, or to store large data blocks.
Tatvamasi
source share