【问题标题】:When does initWithCoder get called?initWithCoder 什么时候被调用?
【发布时间】:2010-09-18 13:55:04
【问题描述】:

这将加载一个数组

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

调用该函数以加载数组的代码是什么?

【问题讨论】:

  • 并不是说您必须保留阵列才能获得所有权。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多