我有这样的代码
let view = UIView(x: x, y: y, w: sideSize, h: sideSize)
view.addTapGesture(action: { [weak self] (UITapGestureRecognizer) -> () in
view.reversePop()
})
extension UIView {
public func reversePop() {
// nothing here
}
}
当我使用乐器时,我发现ram的使用量增加,因此它不会释放内存。当我注释掉button.reversePop()时,ram的使用不会增加。
我该怎么做才能防止内存泄漏?
答案 0 :(得分:4)
在此关闭中,您每次点击时都会捕获视图。您需要使用UIView的弱引用,因此您的代码可能看起来像
let view = UIView(x: x, y: y, w: sideSize, h: sideSize)
view.addTapGesture(action: { [weak view] (UITapGestureRecognizer) -> () in
view.reversePop()
})
extension UIView {
public func reversePop() {
// nothing here
}
}
所以, 而不是[weak self]
,你需要使用[weak view]
, ,因为你没有在封闭中调用self,不需要弱化自