zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Windows 10 开发日记(二)-- 手势顺序调研
    Windows 10 开发日记(一) -- 手势通览
    开篇说两句
    我从上海回苏州了,你懂的!
    数组名相关
    指针相关笔记
    static相关
    输入分式,输出化简式的C语言算法
    语句界定
    switch相关
  • 原文地址:https://www.cnblogs.com/jordanYang/p/5378576.html
Copyright © 2011-2022 走看看