encodeWithCoder什么时候被调用?

nod*_*nja 5 xcode cocoa-touch objective-c nscoder

这将保存一个数组(我认为).

- (void)encodeWithCoder:(NSCoder *)encoder {
    [encoder encodeObject:myArray forKey:@"myArray"];
}
Run Code Online (Sandbox Code Playgroud)

我想在保存数组时是否必须直接调用此方法,还是必须执行其他操作?

Sve*_*ven 8

您不直接调用此方法.NSCoder如果它需要序列化该对象,则由子类调用它.如果你想编码对象图使用类方法archivedDataWithRootObject:archiveRootObject:toFile:NSKeyedArchiver.这反过来将调用encodeWithCoder:您的对象的方法.另请注意,阵列中的每个对象都必须实现NSCoding协议.