审查生成的仪表板绑定

来自 自动引用计数
Swift 6.3.3 高级 6分钟 找出 3处问题

审查这段生成的仪表盘绑定代码,检查生命周期安全以及重复绑定行为。

把控制器绑定到数据源。任一对象释放后都应安全停止刷新;重新绑定必须断开旧数据源,而且对象关系不能成环。

swift
final class DataSource {
    var onChange: (() -> Void)?
    func load() -> [String] { ["open", "closed"] }
}

final class DashboardController {
    var rows: [String] = []
    var refreshHandler: (() -> Void)?

    func bind(to source: DataSource) {
        refreshHandler = { [unowned self] in
            self.rows = source.load()
            print("rows", self.rows.count)
        }
        source.onChange = self.refresh
    }

    func refresh() {
        refreshHandler?()
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误