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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© f1gogo 中级黑马   /  2015-9-16 22:38  /  1095 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在几天学习oc,发现在类的初始化中经常用到  if(self=[super init]); 对这一行代码不太明白。希望,大家能分享下心得,或者发几个资料链接学习下。非常感谢。

4 个回复

倒序浏览
if(self=[super init]);
给父类初始化进行一个判断,如果初始化成功及  【super init】!=nil
这样才能给默认值进行赋值。
回复 使用道具 举报
这个if是判断对象是否已经初始化并分配地址的,可以变成if(self != NULL),这样也是可以的,因为如果初始化成功了之后对象是不为NULL的

对于self = [super init]可以这样理解,self进行初始化的时候使用的是super init方法,所以super init会返回self的地址,当self = [super init]时意味着self = 返回的地址 = self,所以是初始化完成的。
不过你这代码貌似有点问题。应该是 if (self == [super init])
回复 使用道具 举报
这是哪一天的视频  我怎么感觉没看到过。。。
回复 使用道具 举报
lumangmang 发表于 2015-9-17 12:16
这是哪一天的视频  我怎么感觉没看到过。。。

方法的重写那一部分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马