黑马程序员技术交流社区
标题:
有关OC构造函数的问题
[打印本页]
作者:
siegee
时间:
2014-4-28 19:58
标题:
有关OC构造函数的问题
本帖最后由 siegee 于 2014-4-29 00:21 编辑
哪位大神能就下面这段代码给详细的说明说明?
-(id)init
{
self=[super init];// 重点
if (self) {
}
return self;
}
作者:
魅影穿眸
时间:
2014-4-28 20:28
就相当于是显示调用父类的构造函数一样
要先将父类实例化,然后才能实例化子类
你看到的代码一般是if (self = [super init]) {...}
相当于是self = [super init]; if (nil != self) {...}
如果父类实例化失败了,返回的指针为空,则无法进行当前类的初始化工作。
self相当于是CPP里面的this,super表示的是父类指针
作者:
gmadong@163.com
时间:
2014-4-28 21:33
-(id)init
{
self=[super init];//就是显示的调用类的方法 但在这个过和中是没有父类对象的
if (self) {
}
return self;
}
作者:
sabjiang
时间:
2014-4-28 21:41
-(id)init
{
self=[super init];// 任何对象都是继承NSObject的,对象的init方法其实是从父类继承来的,重写自己的init当然需要先调用父类的init,在内存中开辟存储空间
if (self) { //判断返回的self是否为空,避免父类的init方法造成野指针错误,不过一般不会
}
return self;
}
PS:这应该是面向对象的基本特性,可以温习下牛逼的三大特性:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2