oc中instancetype和id的区别

相同点:instanceType和id都是作为方法的返回类型而被使用。

不同点:

1.instancetype可以返回和方法所在类相同类型的对象,id返回的类型只能是未知类型的对象;

对于简易构造函数,用instancetype更好一点,因为编译器因此会知道返回的是什么类型的方法对象,而用id则不会,它只会返回未知类型的对象;

2.instancetype在错误检查机制上更优于id,由于instancetype能够在无关联返回类型中返回对象的类型,因此更利于开发者检测到无关联返回类型中的错误。而id返回的是未知类型,在无关联返回类型中检错时没有instancetype更易于检测错误。

1、instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。

2、instancetype只能作为返回值,id可以作为参数.

-(void)setValue:(instancetype)value

{

}

报错!

应该写成

-(void)setValue:(id)value

{

}

你可能感兴趣的:(oc中instancetype和id的区别)