1、对需要监听的对象添加 @objc dynamic修饰 、使用的KVO监听及对应方法才会起作用。
//在自定义的UITableViewCel中使用案例
class MessageTableViewCell:UITableViewCell{
@objc dynamic var msgModel = MessageModel()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.addObserver(self, forKeyPath: "msgModel", options: NSKeyValueObservingOptions.new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if ((keyPath == "msgModel")&&(change?[NSKeyValueChangeKey.newKey] != nil)) {
//Doing something
}
}
deinit {
self.removeObserver(self, forKeyPath: "msgModel", context: nil)
}
}
2、Swift中willSet和didSet这两个方法,本身就用来监听属性的变化,也可以不使用KVO的监听方法。
最后
以上就是现代冰棍最近收集整理的关于Swift中KVO使用的全部内容,更多相关Swift中KVO使用内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复