super init

【构造方法】

1.通常面向对象的语言都有在创建对象的时候,使用构造方法
2.在OC当中,所有init开头的方法,都是要手动调用的,是对类的对象进行初始化,包含两种,有参和无参
self其实就是对象本身,谁调用这个方法,谁就是self
super: 调用父类方法的关键字
id:等价于void*【某些情况下】

自定义的init方法,都必须调用父类的init方法。
一般情况下为:

- (id)init
{
 [super init];
 xxx = xxx;
}

通常情况下,这种模式可以满足绝大多数的需求,但是在少量情况下,需要一些特殊处理。
1,出于优化的考虑,init方法会释放已经分配了内存的对象,然后创建另一个新对象并返回之。
2,init方法在执行过程中发生了错误,所以会释放对象并返回nil。

对于1,苹果官网的做法是将父类init方法的返回值给self,对于2,苹果官网的做法是检测父类返回的对象是否为nil,为nil则不需要继续进行。

所以,苹果推荐的init自定义方法是:

- (id)init
{
 self = [super init];
 if(self)
 {     
       xxx = xxx;
 }

 return self;
}

init中,可以直接进行赋值,也可以使用存取方法。
偏好直接赋值的人认为:对象只有执行完init之后,才能完成初始化。
偏好使用存取方法的人认为:存取方法除了能为实例变量赋值之外,还能做其他的事情。只要是设置实例变量,都可以使用存取方法。

【说明】
为什么用super init,通常情况下,我们一个类的对象都是有父类的属性,加上自己特有的属性构成。在创建一个对象的时候,首先要对父类的属性进行init,判断父类是否init成功,再来构造自己的属性
init就是对我们创建的对象进行初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值