我们总是在目标C之前init
之前alloc
,然后写init
的方法,为什么我们不要alloc
a super
然后启动它?为什么super不需要分配?
- (id) init {
if(self = [super init]){
//init iVars
}
return self;
}
我们总是在目标C之前init
之前alloc
,然后写init
的方法,为什么我们不要alloc
a super
然后启动它?为什么super不需要分配?
- (id) init {
if(self = [super init]){
//init iVars
}
return self;
}
当分配子接口时,其大小包括父级的大小。它们不是独立的对象,它们被合并。 'super'必须被初始化,以便它可以准备其数据成员。然后你的对象初始化它的成员。例如,假设您有一个自定义引用计数接口,需要将'refCnt'初始化为1.然后,将接口置于该接口上。这意味着您的界面的分配大小是参考计数界面的大小+您特定贡献的大小。 (例如,引用计数接口中的'int refCnt'和接口中的'int x'意味着sizeof(您的接口)== 8〜)。因此,分配只需要发生一次。然后,你初始化'超级'(在这种情况下,引用计数接口),所以'refCnt'将是1.之后,你初始化你自己的数据。
请注意,'超'不是一个单独的对象。它只是意味着“自我,但使用超类的命名方法的实现”。 –