Я знаю, что следующее вызывает утечку памяти, потому что 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)
}
}
Атмана в этом случае не может быть высвобожден, потому что это сильная ссылка. Единственный случай, когда это может привести к неправильному использованию exec, - это когда вы используете незанятое я. – stefos
На самом деле это лучше, потому что освобождение не начнется, пока функция не завершится – Daniel