objective-c init构造方法以及id和instancetype的区别

在OC中init开头的方法

  • 用途:用于初始化一个对象,让某个对象已创建出来就拥有某些属性和值

init继承与NSObject,自定义初始化方法,就是将init方法重写,在init方法中初始化成员变量

注意:
  1. 必须先初始化父类,再初始化子类
  2. 必须先判断父类是否初始化成功,只有父类初始化成功才能继续初始化子类
  3. 返回当前对象的地址
 - (instancetype)init
{   
    //1.初始化父类
    self = [super init];
    //2.判断父类是否初始化成功
    if(self)
    {
        //3.初始化子类
        //设置属性的值
    }
    //4.返回地址
    return self;
}
  • id在编译时不能判断对象的真实类型
  • instancetype在编译的时候可以判断对象的真实类型
  • id可以用来定义变量,可以作为返回值,可以作为形参
  • instancetype只能作为返回值

注意:但凡自定义构造方法,返回值尽量使用instancetype,不要使用id

你可能感兴趣的:(objective-c init构造方法以及id和instancetype的区别)