自定义委托在点击按钮时导致错误

Custom Delegate causing errors on button tap

我正在 swift 上使用 MVVM 架构开发一个简单的 tableView 项目。但是,当我点击该 tableView 上的按钮时,出现如下错误:

线程1:同时访问0x7faf490331c8,但修改需要独占访问

我定义了这样一个模型

struct Person{
    var name: String
    var username : String
    var currentFollowing : Bool
    let image : UIImage?
}

有自定义委托协议

protocol  PersonFollowingTableViewCellDelegate : AnyObject {
    
    func PersonFollowingTableViewCell( _ cell: PersonFollowingTableViewCell, didTapWith  : Person)
}

我正尝试使用它来配置按钮

 @objc private func didTapButton(){
        let defaultPerson = Person(name: "default", username: "default", currentFollowing: true, image: nil)
        person?.currentFollowing = !(person?.currentFollowing ?? true)
        delegate?.PersonFollowingTableViewCell(self, didTapWith: person ?? defaultPerson )
        prepareForReuse()
        configure(with: person ?? defaultPerson)
    }

ViewController中的回调方法在这里

extension ViewController : PersonFollowingTableViewCellDelegate{
    func PersonFollowingTableViewCell(_ cell: PersonFollowingTableViewCell, didTapWith array: Person) {
        return
    }

修改你的@objc private func didTapButton()。 而不是

person?.currentFollowing = !(person?.currentFollowing ?? true)

制作

let currentFollowing = !(person?.currentFollowing ?? true)
person?.currentFollowing = currentFollowing