美文网首页
id 与instancetype的区别

id 与instancetype的区别

作者: 蝉始鸣 | 来源:发表于2018-04-24 15:12 被阅读0次

    instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!

    好处:确定对象类型帮编译器更好定位代码问题。

    相同点:

    作为方法的返回类型

    不同点:

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

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

    @interface NSObject

    +(id)alloc;

    -(id)init;

    @end

    当我们初始化 NSArray时

    NSArray*array = [[NSArray alloc] init];

    [NSArray alloc]返回类型属于关联返回类型,NSArray *

    instancetype

    假如一个不是关联返回类型的方法

    @interface NSArray

    +(id)constructAnArray;

    @end

    当我们初始化的时候

    [NSArray constructAnArray]

    得到返回类型和方法声明的返回类型一样,是id

    如果使用 instancetype 作为返回类型

    @interface NSArray

    +(instancetype)constructAnArray;

    @end

    同样方式初始化

    [NSArray constructAnArray]

    得到的返回类型和方法所在类型相同,是 NSArray *

    本文转载自 https://www.cnblogs.com/heri/p/4583592.html

    相关文章

      网友评论

          本文标题:id 与instancetype的区别

          本文链接:https://www.haomeiwen.com/subject/dhjjlftx.html