我知道以下内容会导致内存泄漏,因为 MyClass
和 myClosure
相互引用。
var MyClass {
var myVar = 0
let myClosure: (Int) -> Void
init() {
self.myClosure = { x in
self.myVar = x
}
}
}
以下是否也会导致内存泄漏?为什么或为什么不?
var MyClass {
var myVar = 0
function myFunc() {
let myClosure = { x in
self.myVar = x
}
myClosure(0)
}
}
最佳答案
不会,这(实际上)不会导致内存泄漏。 myClosure()
在 myFunc()
内部定义。当 myClosure(0)
被调用时,闭包将被安排执行,当它完成时,它将被从内存中删除。
您的代码的唯一问题是闭包内的 self
是一个强引用,它可能会在闭包执行时被释放。这将导致严重的过度错误。确保创建对 self 的弱引用,并在闭包中使用它。
关于ios - 这个关闭会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436920/