OC中给对象进行初始化的方法是: init 该方法是一个对象方法,返回的是一个对象(调用init方法的对象)
OC的构造方法,主要学习如何重写构造方法,让对象创建后,就有初始值
说明:alloc方法:向某个类发送alloc消息的结果,为该类分配内存,以存放该类的全部实例变量,还将这块内存区域全部初始化为0
init方法是构造方法,是用来初始化对象的方法,注意这是一个对象方法,以减号开头。默认初始化完毕后,所有成员变量的值都为0
注意: 1.一个刚刚分配的对象并不能立即使用
2.需要先初始化该对象,然后才能使用它
3.但由于未进行初始化,随后可能出现一些不可预测的行为。
重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值
把new方法拆开如下:
1.调用类方法+alloc分配存储空间,返回未经初始化的对象 Person *s1 = [Person alloc];
2.调用对象方法-init进行初始化,返回对象本身 Person *p2 = [p1 init];
3.以上两个过程整合为一句:Person *p = [[Person alloc] init];
涉及的几个问题:1.[super init]的作用:面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化。
2.self为什么要赋值为[super init];
简单来说就是为了防止父类的初始化方法release掉了self指向的空间并重新alloc了一块空间。
这时,[super init]可能alloc失败,这时就不再执行if中的语句。
3.super作为消息接受者的实质
super并不是真正的指针,[super message]的实质是有self来接受父类的message。需要注意的是,[super message]中,
message方法出现的self为[self message]语境中的self,即子类实例。
|
|