继续创造,加快成长!这是我参与「日新方案 6 月更文应战」的第17天,点击检查活动概况。
在本章中,你将学会Destructor
析构函数的运用办法。
前语
和Apple
官网或者网上分享的教程类文章不同,我将以实际开发视点叙述Swift
言语的一些概念和用法,便利大家更好地学习和掌握Swift
言语。
这一起也是对自己学习Swift
言语过程的常识整理。
如有过错,以你为准。
析构函数的界说
析构函数,也叫析构器。
它是在对象毁掉的时分自动调用,完成实例清理作业以开释资源的函数。
在Swift
言语中,咱们运用Initializer
结构函数,在实例初始化时调用,以实现初始化的业务场景。
而当咱们开释实例时,咱们还需求运用Destructor
析构函数进行资源的开释,达到内存优化的目的。
这就像是咱们运用电脑相同,打开运用时咱们调用Initializer
结构函数初始化实例,然后切换运用的时分,系统就需求调用Destructor
析构函数开释实例。
与Initializer
结构函数不同点是,Initializer
结构函数能够在Class
类、Struct
结构体中运用,而Destructor
析构函数只适用于Class
类,每个类最多只能有一个析构器,并且析构器不带任何参数和圆括号。
析构函数的运用
咱们新建一个PlayGround
项目,命名为SwiftDestructor
。
运用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("调用析构函数")
}
}
上述代码中,咱们界说了一个appInformation
类,咱们声明了三个存储变量appName
、appVersion
、appAuthor
,然后咱们经过结构函数对实例初始化。
然后,咱们运用deinit
关键字运用Destructor
析构函数,当咱们实例被开释时,咱们打印输出下需求的结果。
调用的办法也比较简单,示例:
var Destructor: appInformation? = appInformation(appName: "我的App", appVersion: "1.0.0", appAuthor: "文如秋雨")
Destructor = nil
咱们创建一个appInformation
实例时,咱们会向appInformation
对象中给存储变量赋值,appInformation
实例存储在一个Destructor
的可选类型变量傍边。
运用完成之后,咱们让声明的可变类型变量Destructor
为nil
,这样在执行后,析构函数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
以上就是本章的全部内容。
快来着手试试吧!
如果本专栏对你有帮助,不妨点赞、谈论、重视~