instancetyoe 是 clang3.5开始提供的一个关键字,和id一样,都返回oc未知类型的对象。

不同点在于:

1.instancetype 使非关联的返回类型的方法返回当前的类的类型,如  

@interface NSString

+ (instancetype)default;

@end

这里返回的就是NSString类型,如果用id关键字,则没有具体类型。

这样做的优点在于,书写代码过程中,如果接收类型不是方法类的类型,则会有相应提示,便于检查。

 

2.instancetype不能做为参数,只能作为返回值。而id没有限制。