iOS中init构造方法

2017-10-27  本文已影响70人  张开V

1.重写init方法

想在对象创建完毕后,成员变量马上就有一些默认的值就可以重写init方法

重写init方法格式:

重写init方法其它格式

⭐️构造方法使用注意

●子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候应该首先对从父类继承而来的成员变量先进行初始化。
◆原则:先初始化父类的,再初始化子类的。
◇先调用父类的构造方法[super init];
◇再进行子类内部成员变量的初始化。
●千万不要把self = [super init]写成self == [super init]
●重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。

●instancetype的作用

instancetype与id相似,不过instancetype只能作为方法返回值,它会进行类型检查,如果创建出来的对象,赋值了不相干的对象就会有一个警告信息,防止出错。
// init此时返回值是id
NSString *str = [[Person alloc] init];
// Person并没有length方法, 但是id是动态类型, 所以编译时不会报错
NSLog(@"length = %i", str.length);
// init此时返回值是instancetype
// 由于instancetype它会进行类型检查, 所以会报警告
NSString *str = [[Person alloc] init];
NSLog(@"length = %i", str.length);
instancetype *p = [[person alloc] init];
// 错误写法instancetype只能作为返回值

上一篇下一篇

猜你喜欢

热点阅读