id和instancetype的区别

id和instancetype的区别

区别1:类型确定的时期

  • 在ARC(Auto Reference Count)环境下:

    instancetype:编译期确定类型。

    id类型:运行时确定类型。

  • 在MRC(Manual Reference Count)环境下:

​ instancetype和id一样,不做具体类型检查。

区别2:作为方法参数

id可以作为方法的参数,但instancetype不可以。

instancetype只适用于初始化方法和便利构造器的返回值类型。

注意:在自定义初始化或者便利构造方法中尽量使用instancetype作为返回值类型,保证类型安全。

你可能感兴趣的:(iOS-学习总结)