Swift实用小册14:Destructor析构函数的使用
【摘要】 在本章中,你将学会Destructor析构函数的使用方法。前言和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。这同时也是对自己学习Swift语言过程的知识整理。如有错误,以你为准。析构函数的定义析构函数,也叫析构器。它是在对象销毁的时候自动调用,完成实例清理工作以释放资源的函数。在Swift语言中,我...
在本章中,你将学会Destructor析构函数的使用方法。
前言
和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。
这同时也是对自己学习Swift语言过程的知识整理。
如有错误,以你为准。
析构函数的定义
析构函数,也叫析构器。
它是在对象销毁的时候自动调用,完成实例清理工作以释放资源的函数。
在Swift语言中,我们使用Initializer构造函数,在实例初始化时调用,以实现初始化的业务场景。而当我们释放实例时,我们还需要使用Destructor析构函数进行资源的释放,达到内存优化的目的。
这就像是我们使用电脑一样,打开应用时我们调用Initializer构造函数初始化实例,然后切换应用的时候,系统就需要调用Destructor析构函数释放实例。
与Initializer构造函数不同点是,Initializer构造函数可以在Class类、Struct结构体中使用,而Destructor析构函数只适用于Class类,每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号。
析构函数的使用
我们新建一个PlayGround项目,命名为SwiftDestructor。
使用Initializer构造函数我们用到了init()方法,使用Destructor析构函数我们则需要用到deinit关键字。示例:
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
以上就是本章的全部内容。
快来动手试试吧!
如果本专栏对你有帮助,不妨点赞、评论、关注~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)