instancetype和id的区别

来源:互联网 发布:江西淘宝大学 编辑:程序博客网 时间:2024/05/17 21:31

相同点

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


不同点

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

+ (id)appWithArray:(NSArray *)array;LZApp *app = [LZApp appWithArray:array];NSString *string = [LZApp appWithArray:array]; (因为id是未知类型,系统不报错,运行后崩溃)+ (instancetype)appWithArray:(NSArray *)array;LZApp *app = [LZApp appWithArray:array];NSString *string = [LZApp appWithArray:array]; (系统⚠️提示,因为类型不一致)

②instancetype只能作为返回值,不能像id那样作为参数

- (void)setValue:(instancetype)value;  // 报错- (void)setValue:(id)value; // 正确

0 0
原创粉丝点击