swift 在Swift中处理可变模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 在Swift中处理可变模型相关的知识,希望对你有一定的参考价值。

class Observable<Value> {
    private var value: Value
    private var observations = [UUID : (Value) -> Void]()

    init(value: Value) {
        self.value = value
    }

    func update(with value: Value) {
        self.value = value

        for observation in observations.values {
            observation(value)
        }
    }

    func addObserver<O: AnyObject>(_ observer: O,
                                   using closure: @escaping (O, Value) -> Void) {
        let id = UUID()

        observations[id] = { [weak self, weak observer] value in
            // If the observer has been deallocated, we can safely remove
            // the observation.
            guard let observer = observer else {
                self?.observations[id] = nil
                return
            }

            closure(observer, value)
        }

        // Directly call the observation closure with the
        // current value.
        closure(observer, value)
    }
}

以上是关于swift 在Swift中处理可变模型的主要内容,如果未能解决你的问题,请参考以下文章

Swift:处理 UIImage 数据以用于 Firebase 自定义 TFLite 模型

Swift 两种方式实现 async/await 并发模型中任务超时(timeout)的处理

带有可变参数的 Swift 和 C 回调

Swift3中方法可变参数语法的一些改变

闭包中的Swift可变结构和结构的行为不同

如何在 Swift 中设置属性本身可变的属性值