继续创造,加快成长!这是我参与「日新方案 6 月更文应战」的第17天,点击检查活动概况。

在本章中,你将学会Destructor析构函数的运用办法。

前语

Apple官网或者网上分享的教程类文章不同,我将以实际开发视点叙述Swift言语的一些概念和用法,便利大家更好地学习和掌握Swift言语。

这一起也是对自己学习Swift言语过程的常识整理。

如有过错,以你为准。

析构函数的界说

析构函数,也叫析构器。

它是在对象毁掉的时分自动调用,完成实例清理作业以开释资源的函数。

Swift言语中,咱们运用Initializer结构函数,在实例初始化时调用,以实现初始化的业务场景。

而当咱们开释实例时,咱们还需求运用Destructor析构函数进行资源的开释,达到内存优化的目的。

这就像是咱们运用电脑相同,打开运用时咱们调用Initializer结构函数初始化实例,然后切换运用的时分,系统就需求调用Destructor析构函数开释实例。

Initializer结构函数不同点是,Initializer结构函数能够在Class类、Struct结构体中运用,而Destructor析构函数只适用于Class类,每个类最多只能有一个析构器,并且析构器不带任何参数和圆括号。

析构函数的运用

咱们新建一个PlayGround项目,命名为SwiftDestructor

Swift实用小册14:Destructor析构函数的使用

运用Initializer结构函数咱们用到了init()办法,运用Destructor析构函数咱们则需求用到deinit关键字。示例:

import UIKit
class appInformation {
var appName: String
var appVersion: String
var appAuthor: String
// 结构函数
init(appName: String, appVersion: String, appAuthor: String) {
self.appName = appName
self.appVersion = appVersion
self.appAuthor = appAuthor
print("调用结构函数")
}
// 析构函数
deinit {
print("调用析构函数")
}
}

Swift实用小册14:Destructor析构函数的使用

上述代码中,咱们界说了一个appInformation类,咱们声明了三个存储变量appNameappVersionappAuthor,然后咱们经过结构函数对实例初始化。

然后,咱们运用deinit关键字运用Destructor析构函数,当咱们实例被开释时,咱们打印输出下需求的结果。

调用的办法也比较简单,示例:

var Destructor: appInformation? = appInformation(appName: "我的App", appVersion: "1.0.0", appAuthor: "文如秋雨")
Destructor = nil

Swift实用小册14:Destructor析构函数的使用

咱们创建一个appInformation实例时,咱们会向appInformation对象中给存储变量赋值,appInformation实例存储在一个Destructor的可选类型变量傍边。

运用完成之后,咱们让声明的可变类型变量Destructornil,这样在执行后,析构函数deinit会被立即调用打印输出,Destructor占用的内存会随之开释。

析构函数小结

之所以运用Destructor析构函数,咱们更多地考虑在多个实例被一起调用时,由于Initializer结构函数初始化带来的资源占用,比方后台告诉的移除。

这样当咱们调用实例并初始化后,就能够调用Destructor析构函数开释实例所带来的资源占用,然后防止不必要的资源糟蹋,优化内存办理。

本章代码

import UIKit
class appInformation {
var appName: String
var appVersion: String
var appAuthor: String
// 结构函数
init(appName: String, appVersion: String, appAuthor: String) {
self.appName = appName
self.appVersion = appVersion
self.appAuthor = appAuthor
print("调用结构函数")
}
// 析构函数
deinit {
print("调用析构函数")
}
}
var Destructor: appInformation? = appInformation(appName: "我的App", appVersion: "1.0.0", appAuthor: "文如秋雨")
Destructor = nil

以上就是本章的全部内容。

快来着手试试吧!

如果本专栏对你有帮助,不妨点赞、谈论、重视~