OC基础---初始化方法

初始化方法
    在OC中创建对象分为两部:开辟空间,初始化     
    初始化的主要作用:为某些实例变量赋值,而且初始化方法在整个对象生命周期只调用一次。
    学习继承之前,进行初始化,并没有self= [super init]字样,我们需要为实例变量逐一赋值; 学习继承之后,父类中声明了公共实例变量。作为父类,有自己的初始化方法,为这些公共实例变量赋值。子类定义了除了父类中的公共实例变量之外的实例变量。 在自身的初始化方法中,优先向super发送init方法,初始化公共变量。初始化成功后,在初始化自身特有的变量,从而完成所有的实例变量的初始化。
   完整的初始化方法:
    -(void)init{
     self = [super init];//给super发送init消息:即执   行父类中的init方法
       if(self)
         {
         初始化设置;  //子类自己的初始化设置
          }
        return self  //初始化完成,返回对象本身
     }  
 
   其中的super是编译器指令,并非对对象;
   作用:给super发消息,会执行父类中的实现方法。
   子类可以重写父类的方法,即子类具有自己的实现,又有父类继承来的实现;如果想使用父类的实现,使用duper;
     例如:

                  OC基础---初始化方法_第1张图片       

    想修改其中的name,初始化方法如下

                    OC基础---初始化方法_第2张图片        
  初始化过程
    1、自己的初始化方法中,优先调用父类的初始化方法
    2、父类的初始化方法中在调用父类的初始化方法,依次往上调用
    3、处于最上层的初始化完成后,回到第二层初始化方法中,完成第二层的初始化
    4、第二层的初始化完成之后,再返回到第三层的初始化方法中,依次执行初始化。直到本类完成初始化方法。
    
  初始化方法的特征
    1、初始化方法是“-”方法
    2、返回值是‘id’或者instancetype类型
    3、 以init开头
    4、可以带0到多个参数(也就是咱们的自定义初始化方法)
    5、内部实现:先执行super的初始化方法,再初始化自身变量,最后return self。

你可能感兴趣的:(objective-c,初始化,初始化方法)