swift中KVO简单使用,监听属性值改变

直接上代码

import UIKit

class ViewController: UIViewController {
    let per = Person()
    override func viewDidLoad() {
        super.viewDidLoad()
        /// 添加观察者
        per.addObserver(self, forKeyPath: "name", options: [.new,.old], context: nil)
    }
    // 点击屏幕通过kvc给Person里面的name赋值
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let num = Int(arc4random()%10000) + 1
        per.setValue("\(num)", forKey: "name")
    }
    /// KVO监听属性
    ///
    /// - Parameters:
    ///   - keyPath: 被监听的属性名
    ///   - object:
    ///   - change:
    ///   - context:
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        print(keyPath ?? "")
        print("完成回调 -- \(String(describing: per.value(forKey: keyPath!)))")
    }
}
import UIKit
class Person: NSObject {
    var name:String?
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容