Странное поведение протокола в Swift - PullRequest
0 голосов
/ 08 октября 2018

В моем приложении есть протокол:

public protocol ViewModel {}

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

Очевидно, что целью этого является стандартизация моего подхода ViewModel.

Когда я применяю вызов конфигурации в cellForRowAt: метод:

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.

Что мне здесь не хватает?Я пытался воссоздать это на детской площадке, и я не могу, что заставляет меня подозревать, что это что-то странное в снятии очереди с клеток.

...