黑马程序员技术交流社区
标题:
重写init 方法中,有一个搞不懂的地方
[打印本页]
作者:
LLLX77
时间:
2015-5-9 11:36
标题:
重写init 方法中,有一个搞不懂的地方
例如:父类init 方法如下:
(id ) init
[
if(self = [super init] )
{ }
return self // 这个 self 指的是什么?self是一个指针,那么这个指针现在指向谁??
}
作者:
wangsong
时间:
2015-5-9 17:21
[super init]是初始化父类中的一些成员变量和其他属性,然后把结果赋值给子类
作者:
Theshy
时间:
2015-5-9 22:21
self 肯定指向被调用者 初始化完成后赋给self
作者:
wangzhewjl
时间:
2015-5-10 08:52
本帖最后由 wangzhewjl 于 2015-5-10 08:54 编辑
简单理解 self 谁调用就是谁 ! 谁调用你写的这个方法 它就指谁!那个对象(类)调用了你这个方法就是指那个对象(类) 这个不要纠结 会晕!
作者:
gclforios
时间:
2015-5-13 17:51
这个初始化过程中 “super”,具体含义是什么?有没有相关详细的说明。只知道[super init]是调用超类初始化函数,可是不知道如何调用?既然是调用初始化函数返回的对象类为啥又赋给了调用者(即子类)?
作者:
50mmf1.0
时间:
2015-5-14 13:57
super指向父类方法,self指向子类方法。
由于继承关系子类和父类的init方法默认都是一样的。
所以if条件都是成立的。然后在if的执行语句里重写init方法,并返回给self,即子类。
结果就是当前类的init方法重写了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2