Swift中的Foundation.Data内存泄漏

时间:2017-10-16 12:51:09

标签: swift memory-leaks

简而言之,这是一个代码片段,它可以轻松地消耗尽可能多的内存,直到它停止为止。但为什么?当我将范围包装在while中的autoreleasepool内时,不会泄漏单个字节。但它仅影响当前范围;如果有漏功能调用,泄漏将继续。那么答案就是在autoreleasepool中包含易泄漏的操作?它看起来有点荒谬和不可靠。

import Foundation

while true {
    let _ = "Foo Bar".data(using: .ascii)
    usleep(100)
}

1 个答案:

答案 0 :(得分:0)

这并不意外。在您的Sub IfThenElse() With Sheet1 If .Range("A1").value > 500 Then If MsgBox("A1 > 500, Is this correct", vbYesNo, "Amount of Lines") = vbYes Then .Range("H11") = "My Formula" Else .Range("H11") = "I have Jumped" End If Else .Range("H11") = "I have Jumped" End If End With End Sub 将控制权返回到运行循环之前,顶级自动释放池不会被耗尽。放入其中的物体将继续积累。

我有点惊讶ARC并没有立即销毁while实例,因为将它们分配给“cut”意味着它们实际上从不在范围内。你没有名字可以引用它们,也没有理由让它们活着。