在本章中,你将学会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
以上就是本章的全部内容。
快来动手试试吧!
如果本专栏对你有帮助,不妨点赞、评论、关注~