id 与 instancetype 区别

id 与 instancetype 区别 :

1.id 可以当返回值类型并且可以声明对象

2.instancetype 只可以当返回值类型

3.instancetype 返回和方法所在类相同类型的对象,id返回未知类型的对象(instancetype 会对返回值类型做一个检查,检查你这个返回值是不是当前类类型)

4.自定义初始化方法,返回值类型如果写成id,编译器会自动转换成instancetype

在ARC(Auto Reference Count)环境下:

instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型, 运行时检查类型.

在MRC(Manual Reference Count)环境下:

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

区别2:

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

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

你可能感兴趣的:(id 与 instancetype 区别)