美文网首页
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只能用于作为返回值

相关文章

  • id 和 instanceType 有什么区别?

    id 和 instanceType 有什么区别? 相同点 instancetype 和 id 都是万能指针,指向对...

  • 内存管理总结

    1.id和instanceType区别? 2. id和NSObject区别? 3. id、nil、Nil、NULL...

  • id和instancetype区别

    init函数返回类型必须是instancetype,这个和id的区别是,id代表任意NSObject,而insta...

  • instanceType 和 id 区别

    参考博文?: instanceType & id 区别 关联返回类型(related res...

  • instancetype 和ID区别

    instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型! 好处:确定对象类型帮编译器更好定...

  • instancetype和id区别

    // instancetype == id == 万能指针 == 指向一个对象// id在编译的时候不能判断对象的...

  • instancetype 和 id 区别

    区别1: 在ARC(Auto Reference Count)环境下: instancetype用来在编译期确定实...

  • instancetype和id 区别

    首先要弄清楚两者的区别需要说清楚两个概念:关联返回类型和非关联返回类型。根据Cocoa的命名规则,满足下述规则的方...

  • instancetype和id区别

    一、什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,...

  • instancetype和id区别

    相同点:都可以作为方法的返回值类型 不同点:instancetype只能作为返回值,不能像id那样作为参数inst...

网友评论

      本文标题:instancetype和id的区别

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