什么时候调用initWithCoder?

时间:2010-09-18 13:55:04

标签: objective-c arrays cocoa-touch xcode nscoder

这将加载一个数组

- (id)initWithCoder:(NSCoder*) coder
{
    self = [super initWithCoder: coder];
    if (self) {
        myArray=[coder decodeObjectForKey:@"myArray"];
    }
    return self;
}

调用此函数以便可以加载数组的代码是什么?

2 个答案:

答案 0 :(得分:4)

initWithCoder:方法用于使用NSCoding protocol进行反序列化,例如通过[NSKeyedUnarchiver unarchiveObjectWithFile:]。有关详细信息,请参阅Archives and Serializations Programming Guide,尤其是Encoding and Decoding Objects部分。

答案 1 :(得分:1)

正如DarkDust所说,当使用NSUnarchiver或NSKeyedUnarchiver时会调用它。但是,这不一定是自己的情况。实际上可以实现自定义NSCoder并根据NSDecoder ...编码/解码yaml等...

最常见的用例是加载nib文件,因为这些内容已存档。