1、有时候初始化需要让对象带有初始值,那么可以定义另一个初始化方法来使用,比如:
-(XCLASS *) initWith: (int) n {
self = [super init];
if(self) {
[self setFunction: n]; // setFunction方法是指XCLASS定义的赋值方法
}
return self;
}
这个方法的意思是:首先用父类的init方法先把对象初始化,然后用if(self)判断是否初始化成功(初始化成功则self不为空,判断条件成立;注意没初始化的话,self的值是空的),成功则使用赋值方法给对象赋值,那么这就是一个带赋值的初始化方法了。
同时为了方便使用,甚至可以再进一步重载init方法,如下:
-(instancetype) init {
return [self initWith: 0];
}
那么当使用init方法的时候,就会自动使用重载过的方法,给对象赋初始值0。方法的返回类型instancetype表示未确定具体返回类型,因为你不知道使用重载过的init方法的会是哪一个继承后的类。重载init方法有一个标准模板,如下:
-(instancetype) init {
[super init];