美文网首页
析构函数

析构函数

作者: 豌豆_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,调用析构函数

相关文章

  • C++之析构函数

    析构函数的概述 析构函数 完成对象的清理工作,先清理,再释放对象空间。析构函数也是编译器自动调用。 析构函数 不能...

  • 简介python中的析构函数与构造函数

    python的构造和析构函数为固定的名字。 构造函数 析构函数 不像c++中那样构造函数和析构函数是类名字。并且在...

  • [C++之旅] 13 析构函数

    [C++之旅] 13 析构函数 析构函数与构造函数相反,构造函数在实例化一个对象时调用,而析构函数在销毁一个对象时...

  • C++基础-构造函数和拷贝函数

    构造函数 析构函数 析构函数: 相当于临终遗言,对象被回收的时候会被调用。如果有在对象内部开辟堆内存,在析构函数里...

  • C++总结

    函数 为什么基类的析构函数用虚函数 在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发...

  • 2020-02-10 C++基础2

    1:为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 将可能会被继承的父类的析构函数设置为虚...

  • C++三五法则

    1、需要析构函数的类也需要拷贝构造函数和拷贝赋值函数。 通常,若一个类需要析构函数,则代表其合成的析构函数不足以释...

  • 析构函数

    析构函数与构造函数相反,在一个类的实例被释放之前,析构函数被调用,析构函数使用关键字deinit来定义,类似于初始...

  • C++ 析构函数

    析构函数(destructor)是一种特殊的成员函数。 类的析构函数名是在类名前加一个波浪好~ 累的析构函数是在删...

  • 构造函数

    构造函数 构造函数的数组的应用 类中包含类,并且给类传参 析构函数(逆构造函数):每个构造函数都析构函数,谁最先构...

网友评论

      本文标题:析构函数

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