重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值.
#import "Person.h"
@implementation Person
//当子类把父类的init覆盖了,默认先执行子类的init
- (instancetype)init{
//
self = [super init];//先让父类把父类原来做的事情做完
//判断父类是否初始化成功
if (self) {
//此处写子类初始化的内容
_age = 10;//给_age设置默认值10
}
return self;//self指代的是方法的调用者
}
@end
这里设计的几个问题:
1:[super init]的作用
面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化
2:self为什么要赋值为[super init]
简单来说是为了防止父类的初始化方法release掉了self指向的空间并重新alloc了一块空间.这时[super init]可能alloc失败,这时就不再执行if中的语句. |
|