原创文章,欢迎转载。转载请注明:关东升的博客
与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数deinit没有返回值,也没有参数,也不需要参数的小括号,所以不能重载。
下面看看示例代码:
class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } init(W width: Double,H height: Double) { self.width = width self.height = height } deinit { //定义了析构函数 print("调用析构函数...") self.width = 0.0 self.height = 0.0 } } var rectc1: Rectangle? = Rectangle(width: 320, height: 480) //实例rectc1 print("长方形:\(rectc1!.width) x \(rectc1!.height)") rectc1 = nil //触发调用析构函数的条件 var rectc2: Rectangle? = Rectangle(W: 320, H: 480) //实例rectc2 print("长方形:\(rectc2!.width) x \(rectc2!.height)") rectc2 = nil //触发调用析构函数的条件
析构函数的调用是在实例被赋值为nil,表示实例需要释放内存,在释放之前先调用析构函数,然后再释放。
运行结果如下:
长方形:320.0 x 480.0
调用析构函数...
长方形:320.0 x 480.0
调用析构函数...
析构函数只适用于类,不能适用于枚举和结构体。类似的方法在C++中也称为析构函数,不同的是,C++中的析构函数常常用来释放不再需要的内存资源。而在Swift 中,内存管理采用自动引用计数(ARC),不需要在析构函数释放不需要的实例内存资源,但是还是有一些清除工作需要在这里完成,如关闭文件等处理。
相关推荐
从零开始学swift,图灵原创,关东升著。基于swift2.x。2016年3月版
最新的关于学习swift开发的书籍,讲的非常好
Swift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习...
swift 学习笔记 之 函数 编程题
以下是从零开始学习SwiftUI的一些建议: 了解Swift语言基础:SwiftUI是用Swift语言编写的,因此了解Swift语言的基础知识是非常重要的。你可以从苹果官方文档、在线教程或书籍中学习Swift语言。 学习SwiftUI基本概念...
精选Swift相关的学习笔记与资料集合打包上传给大家,这里的笔记非常的容易看得懂,基本上学习编程的看这一堆东西就能很快上上手了,非常的实用。
Swift学习的笔记,总结性的东西,很实用,非常适合新手看,之前学过OC的朋友基本上一看就能上手,非常的实用。
swift 学习笔记 之 扩展
NULL 博文链接:https://duchengjiu.iteye.com/blog/2184242
学习swift的笔记,自己记录的,必须50字,凑够了算,谢谢
贝塞尔曲线使用——模拟心跳曲线
IOS开发-Swift-基础知识学习笔记
ios开发 swift语言学习资料,入门学习,简单易懂;ios开发 swift语言学习资料,入门学习,简单易懂
目前最全最火的swift学习资源和笔记,非常适合小白入门 目前最全最火的swift学习资源和笔记,非常适合小白入门 目前最全最火的swift学习资源和笔记,非常适合小白入门 目前最全最火的swift学习资源和笔记,非常...
Swift学习笔记 更新日志 学习资料 《The Swift Programming Language》中文版
学习swift的笔记,部分代码来自教程。打包的playground方便学习和查看效果。
Swift_100days, 从 [100 Days of Swift ] 学习 Swift Swift_100days如果你刚刚开始学习swift,的话,我建议你从 3.0开始学习 Swift ~ !我开始学习 Swift,因为接下来的天,我 。这是我按天排序的演示,如果我有时间...
iOS渐变,支持——线性渐变,径向渐变,渐变动画,lable字体渐变,lable字体渐变动画
Swift 学习资料.zip,在Playgrounds上编写的Apple Swift语言摘要
swift闭包/面向对象/构造函数/可选项/数组/字典/循环语句/代理/闭包/通知/等基础知识/只用于学习/有什么不对的地方请发我邮箱/swift4.0