美文网首页
instancetype和id的区别

instancetype和id的区别

作者: MarkTang | 来源:发表于2016-01-09 00:48 被阅读124次

    //问题1:instancetype和id区别?
    答:instancetype只能作为返回值而id可以作为属性,参数,返回值,
    instancetype在编译的时候能判断改方法的的返回值,而id不行

        1.
        
        id在编译的时候不能判断对象的真实类型
        instancetype在编译的时候可以判断对象的真实类型
        2.
        
        如果init方法的返回值是instancetype,那么将返回值赋值给一个其它的对象会报一个警告
        如果是在以前, init的返回值是id,那么将init返回的对象地址赋值给其它对象是不会报错的
        3.
        
        id可以用来定义变量, 可以作为返回值, 可以作为形参
        instancetype只能用于作为返回值
    

    //问题2:instancetype 应用场景?
    答:
    一般用于构造方法的重写中作为返回值
    以后但凡自定义构造方法, 返回值尽量使用instancetype, 不要使用id

    // instancetype == id == 万能指针 == 指向一个对象
    // id在编译的时候不能判断对象的真实类型
    // instancetype在编译的时候可以判断对象的真实类型

    // id和instancetype除了一个在编译时不知道真实类型, 一个在编译时知道真实类型以外, 还有一个区别
    // id可以用来定义变量, 可以作为返回值, 可以作为形参
    // instancetype只能用于作为返回值

    相关文章

      网友评论

          本文标题:instancetype和id的区别

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