析构器

与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程,在析构过程需要调用一种特殊的方法deinit,称为析构器,析构器deinit没有返回值,也没有参数,所以不能重载,析构函数只适用于类类型,不能应用于结构体和枚举

类似的方法在C++中称为析构函数,不同的是,C++中的析构函数通常用来释放不再需要的实例资源类型,而在swift中,内存管理采用自动引用计数(ARC),不需要在析构器释放不需要的实例资源,但是还是有一些清除工作需要做,如下实例:

class Rectangle{
                var width:Double
                var height:Double
                init(width:Double,height:Double){
                    self.width=width
                    self.height=height
}
                 
                init(W width:Double,H height:Double){
                    self.width=width
                    self.height=height
}
                 
                init(length:Double){
                    self.width=length
                    self.height=length
}
                init(){
                    width = 10.0
                    height = 20.0
}
                deinit{
                    println("调用析构函数")
                    self.width = 0.0
                    self.height = 0.0
}
            var rect1 = Rectangle(width:10.0,height:20.0)
                rect1 = nil
            
             var rect2 = Rectangle(W:30,H:20)
            
                rect2 = nil
}
时间: 2024-10-06 11:26:57

析构器的相关文章

构造器和析构器

一 构造器 swift的init方法是没有返回值的,而OC的init方法就有返回值,返回类本身 1.默认构造器 即使我们不写init方法,系统也会为函数默认写一个空的init方法 struct Fahrenheit {          var temperature:Double          init(){         temperature = 32.0     } } var f = Fahrenheit() 2.自定义构造器 struct Celsius {          

Python构造器及析构器:__init__与__new__及__del__

__init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__init__是初始化操作.__del__是析构器,当Python对象的所有引用都不存在了(被del了),就会自动触发__del__执行. class CapStr(str): def __new__(cls, string): #此时string = 'i love you' cls是CapStr这

Swift构造器(Initializer)与析构器(Deinitializer)

为了初始化结构体和类等类型的实例属性. 默认构造器 [html] view plaincopy struct Fahrenheit { var temperature: Doubleinit(){ temperature = 32.0 } } var f = Fahrenheit() //调用默认构造器 init() ,没有参数 没有返回值. [html] view plaincopy println("The default temperature   is \(f.temperature)°

十四、析构器 Deinitialization

1. 当一个实例被释放(deallocated)时,析构器会立即被调用.使用关键字 deinit 来定义析构器.只有类类型才有析构器. 2. 析构器工作原理 How Deinitialization Works 当一个实例的自动引用计数 Automatic Reference Counting 为0时,Swift会释放这个实例.一般情况下,当一个实例被dealloc时,释放资源的工作都有Swift完成,但是某些时候,你需要自己进行一些释放资源的工作,比如你创建一个类执行打开文件操作,并写数据到文

c++第五章-(类与对象、构造器和析构器)

1.构造器与结构体的区别:构造器多支持方法.其作用有申请内存,初始化变量. 在c++中构造器没有返回值:语法Class Name(); 2.析构器的作用:释放内存. 在c++中析构器没有返回值:语法~ClassName(); class Animal { public: std::string mouth; std::string name; void eat(); void sleep(); void drool(); Animal(std::string theName); }; class

继承机制中的构造器和析构器

正如此前所讲解的,C++支持程序员自己写出将创建或销毁一个对象时自动调用的方法,也就是构造器和析构器. 在没有继承机制的情况下,我们很容易理解这些方法在创建或销毁一个对象的时候被调用.但是一旦使用了继承机制,构造器和析构器就变得有点复杂了. 比如基类有个构造器,如Animal(),它将在创造Pig 类型的对象时最先被调用,如果Pig类也有一个构造器,它将排在第二个被调用.因为基类必须在类之前初始化原则! 然后我们继续讨论:如果构浩器带着输入参数,事情变得稍微复杂了. class Animal{

【iOS】Swift类的继承、构造方法、析构器等复习

构造方法内容会多一些,涉及Swift中构造的一些规则与概念.这次写了7个Person来复习,外加名人XiaoMing. Mark:Playground真是个好东西,特别练习写Swift时,实时显示真是大赞! 一.继承与重写, 防止重写 1.1 基类, 不继承任何类. Swift不想OC或者Java中继承自Object类.定义一个类,不继承任何类,该类就是基类. class Person1{ //这个Person1就是基类 func eat(){ println("eat a pig!"

python 构造函数__new__(cls[,...]),析构器__del__()

1 class capstr(str): 2 def __new__(cls,string): 3 string=string.upper() 4 return str.__new__(cls,string) 5 6 a=capstr('ifuckyou') 7 print a __new__是构造函数-------实例对象的建立 继承字符串类str,把字符串大写,然后用str.__new__()返回处理后的大写字符串 不同于__init__(),init是初始化函数,new才是构造函数,真正返

构造器与析构器

回顾:之前我们讨论了使用面向对象的编程技术开发程序最基本步骤: 定义一个有属性和方法的类(模板) 为该类创建一个变量(实现) 这是OOP技术的基础,现在逐步向大家介绍一些更复杂和更有用的概念. 首先是构浩器,它是类里的一种特殊的方法. 定义构浩器 构造器和通常方法的主要区别: (1)构浩器的名字必须和它所在的类的名字一样 (2)系统在创建某个类的实例时会第一时间自动调用这个类的构造器 (3)构浩器永远不会返回任何值 创建构浩器,需要先把它的声明添加到类里: class Car{ Car( voi