在Objective C中,为什么我们创建构造函数时总是这样做?
self = [super init];
if ( self ) {
//Initialization code here
}
在Objective C中,为什么我们创建构造函数时总是这样做?
self = [super init];
if ( self ) {
//Initialization code here
}
你可以使用Objective-C来创建构造函数和析构函数
-(id) init
{
self = [super init];
if(self)
{
//do something
}
return self;
}
-(void) dealloc
{
[super dealloc];
}
我们重新指向self
,因为[super init]
允许返回与调用对象不同的对象。我们使用if (self)
是因为[super init]
允许返回nil
。
self
是一个基于某个超类(例如 UIViewController、NSObject - 请查看您的接口文件以确保是哪一个)的类。超类可能需要某种形式的初始化才能使子类按预期工作。因此,通过首先初始化超类,我们确保设置了默认属性等。如果不先初始化超类,我们可能会遇到一些非常意外的行为,特别是在更复杂的对象(如 ViewControllers 等)中。
self
并不是一个类,而是当前类的未初始化实例。 - Chuck