垃圾收集 – 在Swift中,程序员负责破坏对象之间的循环?
发布时间:2020-12-14 05:20:16 所属栏目:百科 来源:网络整理
导读:据了解,Swift使用自动引用计数来进行垃圾收集. 这需要我多年,当我是一个COM程序员. VB6(和之前)自动化对象超出范围时对引用计数进行抽取的过程,大部分时间足以让程序员忘记内存管理. 但是如果对象之间有循环,则 Car-WheelsCollection contains pointers to w
据了解,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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |