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)
        /**
         注释: 在使用一个可以初始化失败的初始化器时,在任何可以存储该结果的变量都是可变的。
         */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方文档 初始化 Initialization是为准备使用类,结构体或者枚举实例的一个过程。这个过程涉及了在实例里...
    hrscy阅读 4,831评论 0 1
  • 初始化 目的是确保第一次使用之前某类型的新实例能够正确初始化 为存储属性设置初始化值 类或者结构体实例化时必须为所...
    labourer阅读 3,947评论 0 0
  • 初始化 (Initialization) 自从苹果2014年发布Swift,到现在已经两年多了,而Swift也来到...
    Lebron_James阅读 4,949评论 0 0
  • 初始化(Initialization) 初始化是类、结构体、枚举类型的准备过程。这个过程涉及到所有存储属性的初始化...
    泗哥阅读 10,934评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,188评论 19 139

友情链接更多精彩内容