Swift:通过可可绑定进行线程安全的字典访问

我有一个类,我需要将一些NSTextField绑定到将由线程更改的字典的某些值。

class Test: NSObject {
  @objc dynamic var dict : [String:Int] = [:]

  let queue = DispatchQueue(label: "myQueue", attributes: .concurrent)

  func changeValue() {
    queue.async(flags: .barrier) {
        self.dict["Key1"] = Int.random(in: 1..<100)
    }
  }

    func readValue() -> Int? {
        queue.sync {
            return self.dict["Key1"]
        }
    }

}

据我了解,这是这样做的方式(因此,不要直接访问变量,而是通过处理队列的函数访问)。

但是,当我尝试使用可可粉绑定将NSTextField绑定到字典的“ Key1”时怎么办? 绑定到变量“ dict”直接在我的测试中有效,但是我不确定(我很确定不是)线程安全。 正确的方法是什么?

评论