id 与 instancetype 区别
2018-08-15 本文已影响0人
Felix的笔头
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只适用于初始化方法和便利构造器的返回值类型