Swift中奇怪的协议行为

时间:2018-10-08 18:44:05

标签: ios swift protocols

我的应用中有一个协议:

public protocol ViewModel {}

public protocol ConfigurableView where Self: UIView {   
    func configure(with viewModel: ViewModel) 
}

显然,这样做的目的是使我的ViewModel方法标准化。

当我在cellForRowAt:方法中应用configure调用时:

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: tableViewCellType(for: indexPath).reuseIdentifier, for: indexPath)

    let item = sections[indexPath.section][indexPath.item]
    let viewModel = process(item: item)

    (cell as? ConfigurableCell)?.configure(item:item)

    return cell

}

我看到一个奇怪的行为-本质上,该单元格是正确的类型,并具有我在此方法中期望的属性,但是一旦将其传递到configure方法中,其所有自定义属性(UILabels等)均为零。就像它在不转移所有属性的情况下复制了单元格一样。一旦代码进入了configure方法的内部,它便是完全不同的指针。

我在这里想念什么?我已经尝试过在操场上重新创建它,但是我做不到,这使我怀疑这对于使单元出队是一件奇怪的事情。

0 个答案:

没有答案