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

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

概述据了解, Swift使用自动引用计数来进行垃圾收集. 这需要我多年,当我是一个COM程序员. VB6(和之前)自动化对象超出范围时对引用计数进行抽取的过程,大部分时间足以让程序员忘记内存管理. 但是如果对象之间有循环,则 Car->WheelsCollection contains pointers to wheelsWheel->CurrentCar constrains a pointer 据了解,Swift使用自动引用计数来进行垃圾收集.

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

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

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

Car->WheelsCollection contains pointers to wheelsWheel->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.

总结

以上是内存溢出为你收集整理的垃圾收集 – 在Swift中,程序员负责破坏对象之间的循环?全部内容,希望文章能够帮你解决垃圾收集 – 在Swift中,程序员负责破坏对象之间的循环?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1027274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存