博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift析构器
阅读量:6871 次
发布时间:2019-06-26

本文共 933 字,大约阅读时间需要 3 分钟。

Swift中的析构器的作用类似C++中的析构器,用deinit关键字,在实例被销毁之前被自动调用的,主要作用是释放一些资源,比如你之前打开了一个数据库,并写入一些数据,在类实例被释放之前需要关闭该数据库。

deinit{        //释放一些资源      }

注意:

  1. 析构器只能在类(class)中使用

  2. 无需使用func关键字也没有括号( )

  3. 析构函数不能有返回值和参数

  4. 不能手动调用析构函数,有系统自动调用

先列举一个简单的例子,清晰的看一下流程功能:

class Father {    var age:Int    var height:Int    init(age:Int,height:Int)    {     self.age=age     self.height=age    }     deinit    {    print("父类实例即将释放----")        print("父亲的年龄为:\(age)")    }    }    class Child:Father{    var sex:String       init(age:Int,height:Int,sex:String)    {        self.sex=sex        super.init(age: age, height: age)    }   deinit    {    print("子类实例即将释放----")        print("孩子的性别为:\(sex)")    }    }    调用:    var child:Child?=Child(age: 45, height: 175, sex: "男")    print("\(child!.sex)")   打印结果:      男     子类实例即将释放----     父类实例即将释放----

通过上面的结果可以得出结论:

* 子类实例释放之前自动调用子类的析构器,最后再自动调用父类的析构器* 调用析构器是在释放实例销毁之前,所以可以在析构器里面是可以调用实力存储属性的* 即使子类没有析构器但仍然会调用父类的析构器(前提是父类析构器存在)

转载地址:http://ztcfl.baihongyu.com/

你可能感兴趣的文章
angular4父组件向子组件传值,子组件向父组件传值的方法
查看>>
eclipse 导入android 项目重名解决方法
查看>>
This Head I hold
查看>>
叫做……概括一个数组?
查看>>
(转)JS 数字格式千分位相互转换
查看>>
进度条
查看>>
5.9 j(java学习笔记)强软弱虚引用及WeakHashMap、IdentityHashMap、EnumMap
查看>>
机器学习杂记
查看>>
移动Web开发经验
查看>>
苹果Itools
查看>>
Windows 2003/2008更改远程桌面端口脚本
查看>>
Mozilla开发新功能提升网络隐私保护
查看>>
运营是一门艺术,互联网营销
查看>>
Visual Studio 2010 SP1将支持HTML5和CSS3
查看>>
[资源记录 ]mobile layer cdn
查看>>
关于scrapy的piplines
查看>>
20165232《信息安全系统设计基础》第六周学习总结
查看>>
凸优化之凸集
查看>>
2、Spring开发的jar文件
查看>>
linux -- #!/bin/bash
查看>>