11-Swift之初始化与反初始化

1、什么是初始化 & 什么是反初始化?

1、初始化

什么是初始化?
初始化是用来为对象设定初始状态的方法。

2、反初始化

什么是反初始化?
反初始化是在对象消失的时候调用其中的代码。此方法在对象retaincount 数降到0时运行,就在要将对象从内存中清除时调用。

2、创建一个类,使用初始化&反初始化&便捷初始化

    class initAnddeinitExample {
        /**
         主初始化器
         */
        init() {
             print("初始化成功")
        }
        /**
         便捷初始化器,是调用主初始化器所必须的
         */
        convenience init(text:String){
            self.init()
            print("便捷初始化成功"+text)
        }
        
        /**
         反初始化器
         */
        deinit {
             print("反初始化成功")
        }
    }
代码的注释:

从上面的代码,我们看到使用了主初始化器和便捷的初始化器&反初始化器。在便捷初始化器的时候,一定要调用主初始化器,来快捷实现初始化。

3、初始化的过程

    /**
     创建一个对象
     */
    var example:initAnddeinitExample?
    /* 使用主初始化器 */
    example = initAnddeinitExample()
    /* 输出:初始化成功  */
    example = nil
    /* 输出:反初始化成功  */
    
    /**
     使用便捷初始化器
     */
    example = initAnddeinitExample(text:"成功QQ吧")
    /* 
     输出:
     初始化成功
     便捷初始化成功成功QQ吧
     */
     print(example!)

4、可失败的初始化器

注意:要创建一个可以返回nil的初始化器,也可以称为可失败的初始化器。就在init 关键字的后面放上一个问号。

        class exampleNil {
            init() {
                 print("init")
            }
            
            convenience init?(value:Int){
                /* 便捷初始化的基础*/
                self.init()
                if value>5 {
                    return nil
                }
             }
            deinit {
                 print("deint")
            }
        }
        
        let NilExample = exampleNil(value:250) as Any
        print(NilExample as Any)
        /**
         注释: 在使用一个可以初始化失败的初始化器时,在任何可以存储该结果的变量都是可变的。
         */

你可能感兴趣的:(11-Swift之初始化与反初始化)