OC系统自带初始化方法
1.init
alloc : 分配内存空间;
init: 初始化
[[Person alloc] init]; //相当于[Person new]
new 执行顺序为alloc + init, new的初始化方法默认为init, 如果存在自定义构造方法的话,因此不建议使用new来创建对象。
2.重写init构造方法:
//init方法的重写
- (id)init {
//一定要调用父类的init方法,因为父类要初始化自己的成员变量和属性
//没有父类就没有子类
if(self = [super init]){
_age = 10;
}
return self;
}
3.自定义构造方法:
//声明
- (id)initWithName:(NSString *)name;
- (id)initWithAge:(int)age;
- (id)initWithName:(NSString *)name andAge:(int)age;
//实现
- (id)initWithName:(NSString *)name {
if(self = [super init]) {
_name = name;
}
return self;
}
- (id)initWithAge:(int)age {
if (self = [super init]) {
_age = age;
}
return self;
}
- (id)initWithName:(NSString *)name andAge:(int)age {
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
自定义构造方法注意点:
必须调用父类的初始化方法,来初始化父类中的成员变量和属性;
建议命名规则以initWith开头,方面使用。