美文网首页
析构函数

析构函数

作者: 豌豆_b314 | 来源:发表于2020-04-16 09:24 被阅读0次

    一、导入
    构造函数式从无到有,诞生的过程
    析构函数相反,从有到无,也就是死亡的时候会调用的函数。

    二、定义
    每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号
    deinit{

    }
    机制:Swift 会自动调用析构函数释放不再需要的实例以释放资源
    通常在析构函数中释放一些资源(如移除通知,关闭文件等操作),帮我们定位内存泄露问题

    三、deinit运行原理,涉及两个问题,请大家思考:
    1、怎么判断什么时候不再需要一个实例了?怎么知道我什么时候去回收,什么时候不回收?
    2、如何实现自动释放?
    实现:
    Swift 通过自动引用计数(ARC)处理实例的内存管理-有人用,我就不回收;没人用,我就收走;
    当引用计数为0时,系统会自动调用析构函数(不可以手动调用)

    class Person {
        var name : String
        var age : Int
    
        init(name : String, age : Int) {
            print("调用构造函数")
            self.name = name
            self.age = age
        }
    
        deinit {
            print("调用析构函数")
            //释放资源
        }
    }
    
    var p1:Person? = Person(name:"zhangsan",age:18)
    var p2:Person? = p1
    var p3:Person? = p2
    p1 = nil
    p2 = nil
    p3 = nil//此时计数器为0,调用析构函数
    

    相关文章

      网友评论

          本文标题:析构函数

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