Swift基础篇——析构方法
发布时间:2020-12-14 01:43:18 所属栏目:百科 来源:网络整理
导读:析构方法 import Foundation /* 析构方法 对象的内存被回收前夕被隐式调用的方法,对应OC的dealloc方法 主要执行一些额外操作,例如释放一些持有资源,关闭文件,断开网络等 */ class FileHandler{ var fd: Int32? // 文件描述符 // 指定构造器 init(path:String
析构方法import Foundation
/* 析构方法 对象的内存被回收前夕被隐式调用的方法,对应OC的dealloc方法 主要执行一些额外操作,例如释放一些持有资源,关闭文件,断开网络等 */
class FileHandler{
var fd: Int32? // 文件描述符
// 指定构造器
init(path:String){
// 需要打开的文件路径,打开方式(只读)
// open方法是UNIX的方法
let ret = open(path,O_RDONLY)
if ret == -1{
fd = nil
}else{
fd = ret
}
print("对象被创建")
}
// 析构方法
deinit{
// 关闭文件
if let ofd = fd{
close(ofd)
}
print("对象被销毁")
}
}
var fh:FileHandler? = FileHandler(path: "/Users/Jonathan_Lee/Desktop/老员工奖.xlsx")
// 当对象没有任何强引用时会被销毁
fh = nil
/* 析构方法的自动继承 父类的析构方法会被自动调用,不需要子类管理 */
class Person {
var name:String
init(name:String){
self.name = name
print("Person init")
}
deinit{
print("Person deinit")
}
}
class SuperMan: Person {
var age:Int
init(age:Int){
.age = age
super.init(name: "Swift")
print("SuperMan init")
}
deinit{
// 如果父类的析构方法不会被自动调用,那么我们还需要关心父类
// 但是如果这样做对子类是比较痛苦的
print("SuperMan deinit")
}
}
var sm: SuperMan? = SuperMan(age: 30)
sm = nil (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |