为什么我们总是在Objective C中创建构造函数时这样做?
self = [super init];
if ( self ) {
//Initialization code here
}
答案 0 :(得分:10)
您可以使用
在objective-c中创建构造函数和析构函数-(id) init
{
self = [super init];
if(self)
{
//do something
}
return self;
}
-(void) dealloc
{
[super dealloc];
}
答案 1 :(得分:7)
我们重新分配给self
,因为允许[super init]
返回与调用它不同的对象。我们if (self)
因为[super init]
被允许返回nil
。
答案 2 :(得分:1)
self
是一个基于某个超类的类(例如UIViewController,NSObject - 请参阅您的接口文件以确定哪个超类)。超类可能需要某种形式的初始化,以便子类按预期工作。因此,首先初始化超类,我们确保设置默认属性等。如果不首先初始化超类,我们可能会遇到一些非常意外的行为,尤其是在更复杂的对象(如ViewControllers等)中。
答案 3 :(得分:0)