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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© x65396731 中级黑马   /  2014-8-12 17:02  /  1268 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是视频老师说修改init方法所需要的3步
self = [super init]; //初始化当前对象包括其父类

if (self i= nil)  //保证其内部的指针是指向类的
{
修改成员变量初始化的值
}

return self; //返回修改后的初始化值

我不太理解第二步的作用,既然第一步是做初始化,那应该不会改变其指针的指向,那为什么还要加上这句呢?

另外 self != 0 ;可以写成 self ; 请问这种缩写在哪里可以可以学,C语言计算符关系符的缩写我完全不知道啊。

1 个回复

倒序浏览
你这个是在写一个初始化的函数,对吧。你应该把第一步和第二部结合起来看。第一步是调用该类的父类的init方法。而你说的第二步,是判断调用父类的init方法是否成功,如果成功再执行下面的部分。想象一种情况,父类初始化的时候,会向一个URL申请资源,结果没有得到,那么这时候就会得到一个空。
你说的第二个问题,self!=0可以置换为self,你这样想,如果self不等于零成立,那么就执行下面的句子,如果不成立,也就是self为零,那么就不执行下面的句子。判断的本质就是看self是不是0;那你换成self呢,不为零,if得到的判断结果是真,就执行。为零,if得到的假,就不执行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马