super init
程序员文章站
2022-07-12 08:02:09
...
【构造方法】
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就是对我们创建的对象进行初始化
下一篇: Struts2下拉框实例解析
推荐阅读
-
白色版的ROG Strix RTX 2080 Super显卡来了:冰清玉洁
-
价格并不高!七彩虹推出水冷版iGame RTX 2060 SUPER Neptune Lite OC
-
Python中super关键字用法实例分析
-
Python中super的用法实例
-
Python中的super用法详解
-
偷跑的RTX 2080 Ti Super实乃乌龙:真身为Tesla云游戏加速卡
-
深入理解Python中的super()方法
-
Go语言init函数详解
-
Implicit super constructor Array() is undefined for default constructor. Must define an explicit constructor
-
super关键字