我通常喜欢使用回调,在这个例子中想知道我是否正确
我有一个带自定义单元格的tableView,它有2个按钮。
所以我有2个回调(块),当用户点击按钮时我会点亮它们
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.firstButtonAction = {
print(indexPath,cell)
print(self)
}
cell.secondButtonAction {
print(indexPath,cell)
print(self)
}
return cell
}
所以我的问题是因为,默认情况下,如果我使用
,回调会保持值的强引用[弱自我]
避免强引用Cycles?
和
相同indexPath,细胞
如果细胞是可重复使用的,那么抓住它们是否正确?
答案 0 :(得分:1)
是的,如果要在闭包中使用self
,请添加[weak self]
或[unowned self]
以避免保留周期。
cell.firstButtonAction = { [weak self] in
否,捕获的indexPath
或cell
等本地值不会导致保留周期。