A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

例如:父类init 方法如下:
(id ) init
[
              if(self = [super init] )
                 { }
            return   self                   //    这个 self 指的是什么?self是一个指针,那么这个指针现在指向谁??
}

5 个回复

倒序浏览
[super init]是初始化父类中的一些成员变量和其他属性,然后把结果赋值给子类
回复 使用道具 举报
self 肯定指向被调用者   初始化完成后赋给self
回复 使用道具 举报
本帖最后由 wangzhewjl 于 2015-5-10 08:54 编辑

简单理解 self 谁调用就是谁 ! 谁调用你写的这个方法 它就指谁!那个对象(类)调用了你这个方法就是指那个对象(类) 这个不要纠结 会晕!
回复 使用道具 举报
这个初始化过程中 “super”,具体含义是什么?有没有相关详细的说明。只知道[super init]是调用超类初始化函数,可是不知道如何调用?既然是调用初始化函数返回的对象类为啥又赋给了调用者(即子类)?
回复 使用道具 举报
super指向父类方法,self指向子类方法。
由于继承关系子类和父类的init方法默认都是一样的。
所以if条件都是成立的。然后在if的执行语句里重写init方法,并返回给self,即子类。
结果就是当前类的init方法重写了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马