黑马程序员技术交流社区

标题: 重写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