我正在使用
SnapKit
来处理我的 AutoLayout
。我想知道这段代码是否会导致内存泄漏,因为我在闭包中捕获 self ?
writtenUpSwitch.snp.makeConstraints {
$0.trailing.equalToSuperview().inset(10)
$0.centerY.equalTo(writtenUpLabel.snp.centerY)
}
此行
$0.centerY.equalTo(writtenUpLabel.snp.centerY)
正在闭包中访问UILabel
而不使用[weak self]
在另一个实例中,这将导致内存泄漏
不会,因为非逃逸闭包不需要保留
self
。执行后关闭将被释放。每当闭包逃脱创建它的函数的范围时,您只需要 [weak self]
或 [unowned self]
。一些例子:
UIView.animated(withDuration: 3) {
self.view.alpha = 0
}
DispatchQueue.main.async {
self.showAlert()
}