我们在目标C alloc
之前始终init
,然后在编写init
方法时,我们为什么不alloc
super
然后启动它?
- (id) init {
if(self = [super init]){
//init iVars
}
return self;
}
答案 0 :(得分:3)
答案 1 :(得分:3)
分配子接口时,其大小包括父级的大小。它们不是单独的对象,而是它们的组合。必须初始化'super'才能准备其数据成员。然后您的对象初始化其成员。例如,假设您有一个自定义引用计数接口,需要将“refCnt”初始化为1.然后将接口基于该接口。这意味着您的接口的分配大小是引用计数接口的大小+特定贡献的大小。 (例如,引用计数接口中的'int refCnt'和接口中的'int x'表示sizeof(您的接口)== 8~。)因此,分配只需要发生一次。然后,你初始化'super'(引用计数界面,在这种情况下),所以'refCnt'将是1.之后,你初始化自己的数据。