《从零开始学Swift》学习笔记(Day 40)——析构函数
原创文章,欢迎转载。转载请注明:关东升的博客
与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数deinit没有返回值,也没有参数,也不需要参数的小括号,所以不能重载。
下面看看示例代码:
class Rectangle {var width: Doublevar height: Doubleinit(width: Double, height: Double){self.width = widthself.height = height}init(W width: Double,H height: Double){self.width = widthself.height = height}deinit { //定义了析构函数print("调用析构函数...")self.width = 0.0self.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_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php
《从零开始学Swift》学习笔记(Day 40)——析构函数相关推荐
- 从零开始学STM32(学习笔记——第三天)
CSDN话题挑战赛第2期 参赛话题:学习笔记 参考文章: [教学文章]STM32内部重要功能全记录 [教学文章]STM32内部核心功能大揭秘 [教学文章]STM32内部重要功能全记录 框架:STM32 ...
- 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一
本笔记由学习MLIR Tutorials总结而成,欢迎批评指正. Chapter1: Toy语言和AST MLIR提供了一种Toy语言来说明MLIR的定义和执行的流程.Toy语言是一种基于张量的语言, ...
- 关东升的《从零开始学Swift》即将出版
大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift><从零开始学Swift>将在< ...
- 关东升的《从零开始学Swift》
这个博文是swift 2.0的,也是可以参考的 http://blog.csdn.net/tonny_guan/article/category/6139217 文章目录 [置顶] 关东升的<从 ...
- 关东升的《从零开始学Swift》3月9日已经上架
大家一直期盼的<从零开始学Swift>于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发.全 ...
- 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?
[GiantPandaCV导语]这篇文章是学习了比较久然后按照自己的理解步骤重新总结了下来,主要是MLIR Toy Tutorials第3,4篇文章的内容.这里主要讲解了如何在MLIR中自定义Pass ...
- 动手学深度学习笔记3.4+3.5+3.6+3.7
系列文章目录 动手学深度学习笔记系列: 动手学深度学习笔记3.1+3.2+3.3 文章目录 系列文章目录 前言 一.softmax回归 1.1 分类问题 1.2 网络架构 1.3 全连接层的参数开销 ...
- matlab将图片旋转的代码_从零开始的matlab学习笔记——(27)图像旋转与动态图...
matlab应用--求极限,求导,求积分,解方程,函数绘图,三维图像,拟合函数....更多内容尽在个人专栏:matlab学习 昨天思考了一下,因为笔者的GUI只是刚刚入门,如果直接说的话也说不了多少东 ...
- 影像组学视频学习笔记(43)-标准差、标准误及95%置信区间CI、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/f09d0f97592f 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(43)主要 ...
- 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/c3e6de2f79b3 来源:简书,已获转载授权 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(42)主要 ...
最新文章
- 【组队学习】【29期】2. 计算机视觉
- 读书人:人机融合中的深度态势感知
- 控制ALV单元格可编辑
- DDR3布线的那些事儿(二)
- ssm上传文件获取路径_ssm框架实现图片上传显示并保存地址到数据库(示例代码)...
- python报告水印怎么弄_超简单Python安全批量打水印教程!
- 使用字符串修改彩票程序
- 基于MATLAB OCR的发票识别系统
- 2018年阿里巴巴关于java重要开源项目汇总
- linux如何在网页播放视频,Linux_网页媒体播放器代码详解,老式的播放器,新式播放器是在 - phpStudy...
- 32位计算机支持word系统,Office 32位与64位版本有什么区别?
- 基于Windows平台的Radius服务器搭建指南
- spj查询零件、工程、供应商表
- 程序员如何预防颈椎病?
- 电脑连接电视的方法---HDMI篇
- 【web开发】利用User-Agent获取浏览器类型
- golang 学习 - chan以及chan的一下用例
- 计算机usb口设置方法,如何控制电脑USB接口 常见的屏蔽电脑USB接口方法
- 计算机网络设备安装检验批,智能建筑工程分为哪些子分部工程与分项工程
- muti_LIDAR_calibration解析
热门文章
- apache2.4 php5.6.30,php5.6.3 + apache2.4.25 安装配置
- 第四版源码技术导航网自适应
- C# unicode 编码 和 解码
- 工行黄金递延业务AU(T+D)风险问题答案
- 字体大小 js 控制
- IE8下div+CSS
- 笔记-网页内嵌Google地图与地理位置模拟
- Ubuntu连接SSHHow to: Connect SSH, SFTP and FTP Servers using Nautilus ubuntu 13.04
- 获取远程文件内容之浏览器模拟器(BrowserEmulator)
- JAVA类定义,成员类,抽象类及接口类