《从零开始学Swift》学习笔记(Day 40)——析构函数

简介:

与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数deinit没有返回值,也没有参数,也不需要参数的小括号,所以不能重载。

 

下面看看示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
     }
     
     deinit {               //定义了析构函数
         print( "调用析构函数..." )
         self.width =  0.0
         self.height  =  0.0       
     }
}
  
var rectc1: Rectangle? = Rectangle(width:  320 , height:  480 //实例rectc1
print( "长方形:\(rectc1!.width) x\(rectc1!.height)" )
rectc1 = nil                      //触发调用析构函数的条件
  
var rectc2: Rectangle? = Rectangle(W:  320 , H:  480 )        //实例rectc2
print( "长方形:\(rectc2!.width) x\(rectc2!.height)" )
rectc2 = nil                      //触发调用析构函数的条件


析构函数的调用是在实例被赋值为nil,表示实例需要释放内存,在释放之前先调用析构函数,然后再释放。

 

运行结果如下:

长方形:320.0 x 480.0

调用析构函数...

长方形:320.0 x 480.0

调用析构函数...

 

析构函数只适用于类,不能适用于枚举和结构体。类似的方法在C++中也称为析构函数,不同的是,C++中的析构函数常常用来释放不再需要的内存资源。而在Swift 中,内存管理采用自动引用计数(ARC),不需要在析构函数释放不需要的实例内存资源,但是还是有一些清除工作需要在这里完成,如关闭文件等处理。

 

本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1747011,如需转载请自行联系原作者

相关文章
|
Swift
Swift学习笔记——页面跳转
创建一个single view app后,项目中有main.storyboard,里面是一个viewcontroller。 那么我们如何实现页面跳转 首先添加一个导航控制器Navigation Controller。点击右上的➕,然后选择控件拖到面板上即可
1245 0
|
前端开发 测试技术 Swift
Swift学习笔记——新建项目
在xcode菜单中选择 new -> project -> single view app 点击next在弹出窗中填写项目名称 这里languge有可以选择object-c或swift作为项目语言。这里我们学习swift,所以选择swift。 如果language选择swift,下面的user interface可以选择swiftUI和storyboard。 SwiftUI是2019 年 WWDC 大会上,苹果在压轴环节向大众宣布了基于 Swift 语言构建的全新 UI 框架,与flutter类似,是用代码编写页面,支持快速预览。
730 0