本帖最后由 小月格子猫 于 2014-9-2 21:58 编辑
1 我们重写方法的时候,一定要看清一个地方,就是这个方法的返回值,比如重写description这个方法,
这个方法一个是类方法,一个是对象方法,类方法,返回的是这个类的名称字符,对象方法返回的是这个
这个对象的类加对象的地址
2 确定了这个返回值之后,我们发现这个返回值,我们一点也不需要,然后呢,我们就直接重写了,这样下次在
调用的时候,就直接调用了我们重写的这个,得到了我们想要的东西,重写description方法,重写成只要一掉用 返回调用它对象的成员属性信息,3 像这种我们知道它的运行原理和返回值的方法,我们用不到的方法,是可以全部重写的
3 然后,说完这类方法,就得说相对应的另一种,如 init ,和 dealloc等方法
4 这类方法呢,很显然我们需要它的作用,但唯一不足的是,它达不到我们最好的期望,所以我们也要重写
它,以便达到我们的期望]
5 怎么改写呢???很显然不能全部改写了,它毕竟还是有用的。于是我们在它原来方法的基础上改写它,
,先执行一下它原来的方法,在这个基础上 加入我们 想要的东西,而执行它原来的方法就是[super init]
先执行一下
6 然后呢,在它执行以后,它已经获得它原本的东西,我们把不满意的地方改掉,如
-(id) init
{
self = [super init];//先得到它原来的东西
if (self != nil)
{
self->_age = 12;//把我们不满意的地方干掉,我不要0,我要一初始化年龄就为12
(init 方法初始化的时候,把对象的成员都初始化为0,我们在有的时候是不需要0的)
return self;
}
7 像这类方法的重写呢,只是在保存原来方法的基础上重写它的某部分,间接的改写它,而不是根本的
|