当前位置: 首页 > news >正文

Swift开发——弱占用

 

自动引用计数(Automatic Reference Counting,ARC),是Swift语言管理类的实例的方式。当创建某个类的一个新实例后,ARC自动为新实例分配内存空间,用于保存实例的类型和存储属性,当将该实例赋给常量、变量或其他实例的属性时,称两者建立了“强连接”,或称“强引用”,只要这个强引用存在,ARC将保护该实例,其占据的内存不能被释放。相对地,可以定义“弱引用”,弱引用的实例可以被释放掉,指向该实例的变量将自动置为空值nil。

01、弱引用

解决强引用环问题的方法有两种:其一,采用弱引用方式;其二,采用非占用引用方式。弱引用方式下,不再被强引用的实例会立即从内存中释放掉,故弱引用方式用于类的实例具有短的生命期的情况下,非占用引用方式用于类的实例具有较长生命期的情况下。

弱引用方式在定义变量时需使用weak关键字,在程序段1中,将第26行的语句添加weak,改为

“weak var author:Author?”;或者将第40行的语句添加weak,改为“weak var book:Book?”;或者上述两条语句均添加weak关键字。这种添加了weak关键字后的语句将构成弱引用。程序段1的执行结果如图1所示。

 

■ 图1 添加了弱引用的程序段1的执行结果

由图1可知,类Book和类Author的析构器均被执行了,说明这两个类创建的实例都被从内存中释放掉了。以程序段8-7的第26行改为弱引用为例,其引用结构如图2所示。

 

■ 图2 添加了弱引用后的引用结构

在图2中,当将zh和bk都置为空值nil后,图2(b)中左侧的Author实例没有被其他实例强引用,故该实例将被ARC从内存中释放掉,此时,执行该实例的析构器,输出“The Author instance is deallocated.”。然后,Book实例没有被其他实例强引用,故ARC将其从内存中释放掉,此时,执行该实例的析构器,输出“The Book instance is deallocated.”。

http://www.lryc.cn/news/376546.html

相关文章:

  • 化工电力系统RFID无线测温技术的重要性。
  • Linux系统:线程互斥
  • 【网络协议栈】TCP/IP相关知识点收集
  • Java开发中的常用字段校验注解
  • 面试经验分享 | 24年6月某安全厂商HW面试经验
  • JSON学习
  • LabVIEW在中国航天中的应用
  • 编程思维的培养
  • Docker笔记-Debian容器内搭建ssh服务
  • 爬虫的法律风险是什么?以及合法使用爬虫技术的建议。
  • 微信小程序允许相机访问相册
  • AMEYA360 | 江苏润石最新发布12颗车规级模拟芯片
  • PHP表单设计:确保必需字段完整性的最佳实践
  • CentOS 7 安装部署Cassandra4.1.5
  • 【数据结构与算法】对称矩阵,三角矩阵 详解
  • Apache IoTDB 走进东南大学,深入分享项目发展历程与收获
  • Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享
  • 没有 ADetailer,ComfyUI 画图脸崩了怎么办?
  • 防爆气象仪的工作原理
  • 深度学习入门5——为什么神经网络可以学习?
  • Integer溢出问题
  • 软件测试全面指南:提升软件质量的系统流程
  • 《逆贫大叔》:一部穿越时光的温情史诗
  • 【电机控制】FOC算法验证步骤——PWM、ADC
  • 如何衡量llm 数据集的多样性
  • 编程天才是什么意思
  • 创建npm私包
  • provider追加android:name的命名有哪些?
  • 长亭网络通信基础
  • hdfs源码解析之DFSClient