黑马程序员技术交流社区

标题: init方法初始化疑问??????? [打印本页]

作者: gclforios    时间: 2015-5-19 15:09
标题: init方法初始化疑问???????
在初始化类中出现以下语句:

self=[super init];

第一个疑问:这这句话中为啥使用“super”,其中super哪里有这方面的说明?
第二个疑问:[super init]调用后应该返回的是父类的类型吧,为啥赋给self,感觉self是子类的类型,不同类型之间能这样操作?
作者: gclforios    时间: 2015-5-19 15:32
这个不弄懂心里过去这道坎啊!呼唤大神
作者: cui0wei0    时间: 2015-5-19 21:36
摘抄: 父类的init方法会初始化父类中定义的实例变量. 如果所有的类的初始化都这么写, 那么NSObject中的init方法就一定会被执行. 否则生成的对象就无法使用. 与此同时, 这样也可以防止漏掉父类中定义的实例变量的初始化. 执行父类初始化的时候可能会出错, 出错则返回nil, 如果父类是NSObject, 则几乎不会出错, 如果是从文件读取或传参进行初始化, 就有可能出错. 另外关于对self赋值的操作, 我们会在以后的章节继续讲解. 哈哈
作者: 追随自然    时间: 2015-5-19 22:27
学习了!

作者: 碧空海    时间: 2015-5-19 22:37
学习了,,,,,,,,
作者: hehelaicaicai    时间: 2015-5-20 15:38
父类的init方法会初始化父类中定义的实例变量. 面向对象的思想,谁的变量谁初始。(个人理解)
作者: liu01230    时间: 2015-5-20 21:17
我也学习啦
作者: _Johnny    时间: 2015-5-20 21:27
第一个疑问:因为重写init方法除了对该类的属性初始化外,还用调用父类的构造函数,NSobject中对于一个类的初始化操作也要对该类创建的对象执行。
第二个疑问:这里看视频的时候,李明杰老师没有具体解释为啥,只说不返回给self会出问题。
作者: 猴子啊猴子    时间: 2015-5-22 09:19
看了大家的回复学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2