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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在初始化类中出现以下语句:

self=[super init];

第一个疑问:这这句话中为啥使用“super”,其中super哪里有这方面的说明?
第二个疑问:[super init]调用后应该返回的是父类的类型吧,为啥赋给self,感觉self是子类的类型,不同类型之间能这样操作?

8 个回复

倒序浏览
这个不弄懂心里过去这道坎啊!呼唤大神
回复 使用道具 举报
摘抄: 父类的init方法会初始化父类中定义的实例变量. 如果所有的类的初始化都这么写, 那么NSObject中的init方法就一定会被执行. 否则生成的对象就无法使用. 与此同时, 这样也可以防止漏掉父类中定义的实例变量的初始化. 执行父类初始化的时候可能会出错, 出错则返回nil, 如果父类是NSObject, 则几乎不会出错, 如果是从文件读取或传参进行初始化, 就有可能出错. 另外关于对self赋值的操作, 我们会在以后的章节继续讲解. 哈哈
回复 使用道具 举报
学习了!
回复 使用道具 举报
学习了,,,,,,,,
回复 使用道具 举报
父类的init方法会初始化父类中定义的实例变量. 面向对象的思想,谁的变量谁初始。(个人理解)
回复 使用道具 举报
我也学习啦
回复 使用道具 举报
第一个疑问:因为重写init方法除了对该类的属性初始化外,还用调用父类的构造函数,NSobject中对于一个类的初始化操作也要对该类创建的对象执行。
第二个疑问:这里看视频的时候,李明杰老师没有具体解释为啥,只说不返回给self会出问题。
回复 使用道具 举报
看了大家的回复学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马