Ash*_*hra 1 memory-management structure value-type automatic-ref-counting swift
由于 ARC 不适用于 struct 和 enum,那么它们如何从内存中释放?当它在面试中被问到时,我不得不陷入困境并试图找到正确的答案,但在谷歌上找不到太多关于它的信息。我知道 swift 在处理值类型方面很聪明。但是如何?
对象(类的实例)的内存管理相对困难,因为对象可能比函数调用、其他对象的生命周期,甚至分配它们的线程的生命周期更长。它们是堆上的独立实体,需要记账以确保它们在不需要时被释放(一旦它们不再被任何其他线程/对象引用,它们就无法访问,因此不能可能需要,因此可以安全删除)。
另一方面,结构体和枚举只是内联存储它们的实例。如果它们被声明为局部变量,它们将被分配在堆栈上(或在寄存器中,但没关系)。如果它们被分配为另一个对象的属性,它们只是直接内联存储在该对象中。它们只会因为它们的包含上下文被释放而被删除,例如当一个函数返回时,或者当一个对象被释放时。