由于ARC不适用于struct和enum,那么如何从内存中释放它们?当它在面试中问到时,我必须陷入困境,并尝试找到正确的答案,但是在谷歌搜索中找不到太多信息。我知道swift在处理值类型方面很聪明。但是如何?
对象(类的实例)的内存管理相对困难,因为对象的寿命可能超过函数调用,其他对象的寿命,甚至是分配它们的线程的寿命。它们是堆上的独立实体,需要进行记账以确保在不需要时将其释放(一旦不再从任何其他线程/对象中引用它们,它们将不可访问,因此 '不可能'],因此可以安全删除)。
另一方面,结构和枚举只是将其实例内联存储。如果将它们声明为局部变量,则会在堆栈上分配它们。如果将它们分配为另一个对象的属性,则它们将直接内联存储在该对象中。仅由于包含上下文的释放而将它们删除,例如当函数返回或对象被释放时。