objective-C中的自定义init方法

时间:2011-11-10 12:05:46

标签: iphone objective-c ipad

如果我正在编写自己的自定义init方法,我会称之为对super init的适当调用是什么?我有时会看到它不只是一些超级初始化方法而是其他东西,这是什么一般规则?

4 个答案:

答案 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]