垃圾收集 – 在Swift中,程序员负责破坏对象之间的循环?

据了解,Swift使用自动引用计数来进行垃圾收集.

这需要我多年,当我是一个COM程序员.

VB6(和之前)自动化对象超出范围时对引用计数进行抽取的过程,大部分时间足以让程序员忘记内存管理.

但是如果对象之间有循环,则

Car->WheelsCollection contains pointers to wheels
Wheel->CurrentCar constrains a pointer to the car the wheel is currently installed on

那么当汽车的一个实例超出范围时,汽车保持其轮子活着就不会被垃圾收集,轮子保持了汽车的生存.

在Swift中使用什么程序员模式或其他方式来避免或减轻这个问题?

这是一个简单的保留周期,你必须通过使用弱引用解决它.

假设这是你当前的课程.

class Car {
  var wheel: Wheel?
}

class Wheel {
  var currentCar: Car?
}

和你目前的情况

var myCar: Car? = Car()
var myWheel: Wheel? = Wheel()

myCar!.wheel = myWheel

解决这个问题,你必须声明其中的一个是弱的,例如:weak var currentCar:Car?

官方的Swift文档说明了here.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...