如果我正在编写自己的自定义init方法,我会称之为对super init的适当调用是什么?我有时会看到它不只是一些超级初始化方法而是其他东西,这是什么一般规则?
答案 0 :(得分:2)
Objective-C类可能有多个init
方法。通常,其中一个被称为“指定初始化器”,并且是其余的所有呼叫。
如果你是子类,并创建一个具有不同签名的init
方法,你应该调用超类'指定的初始化器(尽管调用超类的任何初始化器也可以)。类的文档通常会告诉您指定的初始化程序是什么。
例如,在UITableViewCell
中,指定的初始值设定项为initWithStyle:reuseIdentifier:
,如果您继承并创建具有不同签名的init
方法,则应该调用它。
答案 1 :(得分:0)
这取决于上下文,尝试输入一些nslog并查看为您调用的init。如果是[super init]
或类似initWithNib ......
答案 2 :(得分:0)
构建您自己的init
方法,您应该调用super init
,或者如果您的对象与xib相关联,您还可以调用super initWithNibName:bundle:
作为强制切换实现你的对象只使用一个xib。在最后一种情况下,您还应该重载initWithNibName:bundle:
以便在调用者使用它时进行相同的强制调用。
如果您的对象包含在XIB中,也会重载initWithCoder
答案 3 :(得分:0)
一般规则是,您应该在初始化课程时致电[super init]
。这样,您继承的类(通常是NSObject)的init方法也将被调用并因此构造。如果所有类都遵循此规则,则将建立一系列的内容。
同样的规则在dealloc中,你调用[super dealloc]
。