• 42.OC中instancetype与id的区别


    区别:

    在ARC(Auto Reference Count)环境下:

    instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型,运行时检查类型

    在MRC(Manual Reference Count)环境下:

    instancetype和id一样,不做具体类型检查

    区别2:

    id可以作为方法的参数,但instancetype不可以

    instancetype只适用于初始化方法和便利构造器的返回值类型

    便利构造器

    举例:

    在Teacer.h里添加定义

    +(id)teacherWithName:(NSString *)name;

    在Teacher.m里添加实现

    +(id)teacherWithName:(NSString *)name{

      

         Teacher *t=[[Teacher alloc]initWithName:name];

          return t;

    }

    ps: “-”和“+”修饰的方法的异同:   “-”方法是实例方法,只有实例化 的对象可以调用

                                                         “+”方法是类方法,无需实例化,直接用类名就可以直接访问

    便利构造器封装了对象的整个过程,进一步简化了对象创建的步骤 

  • 相关阅读:
    Codeforces Round #610 (Div. 2)C(贪心,思维)
    Educational Codeforces Round 80 (Rated for Div. 2)C(DP)
    BZOJ2190 仪仗队
    BZOJ3613 南园满地堆轻絮
    BZOJ1084 最大子矩阵
    BZOJ1036 树的统计Count
    BZOJ1452 Count
    BZOJ2242 计算器
    BZOJ2705 Longge的问题
    BZOJ1509 逃学的小孩
  • 原文地址:https://www.cnblogs.com/qiangzheVSruozhe/p/8473442.html
Copyright © 2020-2023  润新知