正确使用单元格中的回调

时间:2018-03-12 19:29:47

标签: swift uitableview

我通常喜欢使用回调,在这个例子中想知道我是否正确

我有一个带自定义单元格的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,细胞

如果细胞是可重复使用的,那么抓住它们是否正确?

1 个答案:

答案 0 :(得分:1)

  1. 是的,如果要在闭包中使用self,请添加[weak self][unowned self]以避免保留周期。

    cell.firstButtonAction = { [weak self] in
    
  2. 否,捕获的indexPathcell等本地值不会导致保留周期。