美文网首页
析构方法

析构方法

作者: 西门丨不吹雪 | 来源:发表于2016-09-05 17:54 被阅读21次

析构方法
对象的内存被回收前夕被隐式调用的方法, 对应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){
    self.age = age
    super.init(name: "lnj")
    print("SuperMan init")
}
deinit{
    // 如果父类的析构方法不会被自动调用,那么我们还需要关心父类
    // 但是如果这样做对子类是比较痛苦的
    print("SuperMan deinit")
}
}
var sm: SuperMan? = SuperMan(age: 30)
sm = nil

相关文章

  • Java析构方法

    析构方法与构造方法相反,当对象脱离其作用域时(例如对象所在的方法已调用完毕),系统自动执行析构方法。析构方法往往用...

  • PHP面向对象基础知识整理

    面向对象由类、成员(字段)、方法组成,方法大致分为三种,分别是普通方法、构造方法、析构方法,具体区别如下: 析构方...

  • python 13面向对象

    构造函数 析构函数 私有 类方法 静态方法 属性方法

  • 10 Swift 析构方法\内存管理\可选类型

    1. 析构方法 析构方法 对象的内存被回收前夕被隐式调用的方法,对应OC中的dealloc方法主要执行一些额外操作...

  • 【第35天】python全栈从入门到放弃

    1 析构方法:(deal)释放一个空间 构造方法:申请一个空间new 析构方法:释放一个空间del 对象借用了操作...

  • Python基础教程:内置方法补充

    构造方法 申请一个空间 析构方法 释放一个空间之前执行 某对象借用了操作系统的资源,还要通过析构方法归还回去 :...

  • Swift4 构造方法与析构方法

    用于完成时例构造的方法被称为构造方法,析构方法是构造方法的逆过程,一个实例对象要被注销或者释放的过程由析f构方法来...

  • 析构方法

    析构方法对象的内存被回收前夕被隐式调用的方法, 对应OC的dealloc方法主要执行一些额外操作, 例如释放一些持...

  • 如何写C++基类析构函数?

    可以看到,派生类的析构函数没有被调到。解决方法是,在基类的析构函数前加virtual。

  • 析构过程

    实例再被释放前会调用 deinit方法,类似oc中的dealloc 子类析构器执行完后会向上执行父类析构器。

网友评论

      本文标题:析构方法

      本文链接:https://www.haomeiwen.com/subject/bjwrettx.html