swift基础语法(29- 析构方法)

析构方法
对象的内存被回收前夕被隐式调用的方法, 对应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/xiaoyang/Desktop/xmg.jpg")
当对象没有任何强引用时会被销毁
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){
        self.age = age
        super.init(name: "qbs")
        print("SuperMan init")
    }
    deinit{
        如果父类的析构方法不会被自动调用,那么我们还需要关心父类
        但是如果这样做对子类是比较痛苦的
        print("SuperMan deinit")
    }
}
var sm: SuperMan? = SuperMan(age: 30)
sm = nil
输出结果:
Person init
SuperMan init
SuperMan deinit
Person deinit

转载于:https://www.cnblogs.com/jordanYang/p/5378576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值