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

© 葛先生 中级黑马   /  2015-3-24 23:51  /  1437 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

objective-c中if(self=[super init])这句话实在是太绕了。虽然找到了解释:这里调用父类的构造函数有个规则这里是先将父类实例化,才能实例化子类如果父类实例化失败了 self = nil ,也就无法初始化当前类,父类都初始化不出来,你这个继承于父类的类又还能正常吗? 但是还是一头雾水

1 个回复

倒序浏览
首先oc中的根类是NSObject,所有的类都间接或直接继承了它,当你定一个子类时,会继承父类和父类的父类直到NSObject,父类中可能会有实例变量,你实例化的子类对象会继承这些实例变量,必须先初始化父类中的实例变量,所以要调用super init  ,从NSObject一直初始化到某个子类的直接父类,直接父类初始化后会返回初始化好的空间(对象)这个时候子类可以对自己定义的实例变量进行初始化  。over
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马