当覆盖initWithCoder时,总是需要调用[super initWithCoder:coder]

时间:2010-03-12 19:21:15

标签: iphone objective-c interface-builder xib

在这段代码中,我从.xib加载一个View Controller(和相关的View):

-(id)initWithCoder:(NSCoder *)coder
    {
    // add custom initialisation code here
    [super initWithCoder:coder];
    return self;
    }

这成功了,但我真的不明白[super initWithCoder:coder]行正在完成什么。我的View初始化后是否初始化我的View Controller?

解释时请尽可能明确。感谢。

1 个答案:

答案 0 :(得分:3)

您的班级是UIViewController的子类。该调用告诉您的超类(UIViewController)执行它需要完成的步骤,以便您可以执行初始化步骤。这将设置UIViewController提供的任何属性,或注册UIViewController需要执行其工作的通知。

除了你需要采取的步骤之外,几乎每次你都从超类中重写一个方法来调用超类的方法。

编辑:此外,如果您不需要在超类提供的方法中执行任何操作,您可以将其保留,并且将使用超类的方法。在这种情况下,我不会提供initWithCoder:方法,除非您需要执行一些代码以及您展示的内容。