1.如果一个类没有实现init方法,那么在调用init初始化的时候所有成员变量都会被初始化为0
2.覆盖NSObject的init方法,instancetype代表返回当前类的实例,在旧版本OC里,还会使用id作为返回类型。因为基类的构造函数有可能返回nil,所以这里需要判断是否为空,这是苹果公司推荐写法,不过很多代码没有做这一步检查
-(instancetype)init
{
self=[super init]
if (self){
//初始化操作
}
return self;
}
3.你也可以创建带有参数的构造函数,和Java不同,当你创建一个构造函数的时候,默认的构造函数依然存在
-(instancetype)initWithName:(NSString *)name
{
self=[super init];
if (self){
//初始化操作
self.name=name;
}
return self;
}
4.子类自定义了一个构造函数,但是使用的时候有可能不小心调用到基类的构造函数,这样会导致子类的部分成员变量没有被初始化,为了防止这种情况,需要重写基类的构造函数