黑马程序员技术交流社区
标题:
重写构造方法
[打印本页]
作者:
zlc
时间:
2015-7-11 21:01
标题:
重写构造方法
@implementation Person
//当子类把父类的init覆盖了,这是默认的先执行子类的
- (instancetype)init{
//先让父类把父类原来做的事情做完
self = [super init];
//判断父类是否初始化成功
if (self) {
//此处写子类初始化的内容
_age = 10; //给年龄设置为默认值 10岁
}
return self; //self指代的事方法的调用者
}
@end
复制代码
1.[super init]的作用:
面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化
2.self为什么要赋值为[super init]:
简单来说是为了防止父类的初始化方法release掉了self指向的空间并重新alloc一块空间。这时的话[super init]可能alloc失败,这时就不再执行if中的语句
3.super作为消息接受者的实质:
super并不是真正的指针,[super message]的实质是由self来接受父类的message。需要注意的是,[super message]中,message方法出现的self为[super message]语境中的self,即子类实例。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2