init 的父类 和 子类的初始化

 设置可变传参的初始化方法

         -(instancetype) initwithHour :(int)h  and Minute :(int)m and second :(int) s;

        然后在实现部分

         -(instancetype) initwithHour :(int)h  and Minute :(int)m and second :(int) s;

        {

            self=[super init];

            if (self !=nil ) {

                 Hour=h;

                Minute=m;

                Second=s;

            }

        }

    然后下方主函数 main 里面进行直接赋值

        Time*tm2=[[Time alloc ]initwithHour :13  and Minute :30  and second :0 ];

        后台直接显示13:30:00

        

        

        

         重写 init  只需要在实现部分直接写 不需要在声明的.h文件重新声明

        init是 NSObject 的一个方法

        对于继承 于 NSObject 的类

        在为内存开辟空间的时候 只是初始化父类的元素 子类的元素需要重新初始化 初始化如下

        先初始化父类的部分

        self=[ super init ];

        //然后初始化自己的部分 先判断self 是否为nil nil 说明 父类初始化失败

        

        -(id) init  //id 是指向任意“对象”的类型  也可以填写instancetype 他只用在初始化里面进行

        {

            if (self=[super init]) {//super 是初始化父类的部分 如果父类初始化失败 那么self 是nil   self只是代表当前对象的一个指针 

                {

                    m_M=10;

                    m_s=10;

                    m_H=20;

                }

                return  self;

            }

        

        }

    }

}

原文地址:https://www.cnblogs.com/xzz5211314/p/5138363.html