id和instancetype的区别
区别1:类型确定的时期
在ARC(Auto Reference Count)环境下:
instancetype:编译期确定类型。
id类型:运行时确定类型。
在MRC(Manual Reference Count)环境下:
instancetype和id一样,不做具体类型检查。
区别2:作为方法参数
id可以作为方法的参数,但instancetype不可以。
instancetype只适用于初始化方法和便利构造器的返回值类型。
注意:在自定义初始化或者便利构造方法中尽量使用instancetype作为返回值类型,保证类型安全。