什么时候使用 initWithCoder: 方法?

Posted

技术标签:

【中文标题】什么时候使用 initWithCoder: 方法?【英文标题】:When do I use the initWithCoder: method? 【发布时间】:2010-11-17 20:03:21 【问题描述】:

我应该

【问题讨论】:

【参考方案1】:

是的,如果您在 IB 中使用自定义类,那么这些对象将使用 initWithCode: 方法进行实例化。因此,在您的班级中,您将覆盖:

-(id) initWithCoder:(NSCoder*)aDecoder 
    if (! (self = [super initWithCoder:aDecoder]))
        return nil;

    // object has been created from IB... do initialization stuff here

    return self;

【讨论】:

【参考方案2】:

当您处理已归档的对象时,您应该使用initWithCoder: 方法。例如,当您专门使用NSKeyedUnarchiver 创建这些归档对象时,或者当您需要将自定义初始化代码添加到来自 xib 文件的对象时。

【讨论】:

我问的原因是因为我创建了 UIScrollView 的子类,我想将它设置在 xib 中的位置并获取该信息并使用它来设置子类,我会使用initWithCoder:为了这样的事情?

以上是关于什么时候使用 initWithCoder: 方法?的主要内容,如果未能解决你的问题,请参考以下文章

initWithCoder: 与initWithFrame:的区别

initWithFrame 与 initWithCoder awakeFromNib 的方法理解笔记

我应该在这里使用awakeFromNib还是initWithCoder?

为啥 UITableViewCell 初始化在 initWithCoder 中不起作用

我应该在这里使用 awakeFromNib 还是 initWithCoder ?

方法 Swizzle encodeWithCoder/initWithCoder