Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift基础篇——析构方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

析构方法 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(@H_673_43@"对象被销毁")
    }
}

var fh:FileHandler? = FileHandler(path: @H_673_43@"/Users/Jonathan_Lee/Desktop/老员工奖.xLSX")
// 当对象没有任何强引用时会被销毁
fh = nil



/* 析构方法自动继承 父类的析构方法会被自动调用,不需要子类管理 */
class Person {
    var name:string
    init(name:string){
        self@H_696_55@.name = name
        print(@H_673_43@"Person init")
    }
    deinit{
        print(@H_673_43@"Person deinit")
    }
}

class SupeRMAN: Person {
    var age:Int
    init(age:int){
        .age = age
        super.init(name: @H_673_43@"Swift")
        print(@H_673_43@"SupeRMAN init")
    }
    deinit{
        // 如果父类的析构方法不会被自动调用,那么我们还需要关心父类
        // 但是如果这样做对子类是比较痛苦的
        print(@H_673_43@"SupeRMAN deinit")
    }
}
var sm: SupeRMAN? = SupeRMAN(age: 30)
sm = nil

大佬总结

以上是大佬教程为你收集整理的Swift基础篇——析构方法全部内容,希望文章能够帮你解决Swift基础篇——析构方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。