id和instancetype的异同

相同点:

都可以作为方法返回值类型

在initWithName:方法中是一样的,例如:

- (id)initWithName:(NSString *)name;

- (instancetype)initWithName:(NSString *)name;

编译器在编译时直接将id转换成instancetype类型

不同点:

1.instancetype只能作为返回值类型,不能像id一样作为参数类型;

2.作为返回值类型时,在自定义方法中也有不同之处

+ (id)constructAnArray; //返回id类型

+ (instancetype)constructAnArray; //返回NSArray *类型

 

posted @ 2015-12-20 20:31  侯文超  阅读(167)  评论(0编辑  收藏  举报