KVO观察员#keyPath(UIView.isHidden)
不起作用,但"hidden"
工作.
很奇怪.是bug还是功能?
child.addObserver(self, forKeyPath: "hidden", options: [.initial,.new], context: nil); override func observeValue(forKeyPath keyPath: String?, of object: Any?, .change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if let view = object as? UIView, view.superview === self && keyPath == "hidden" { print("*"); } }
matt.. 9
是bug还是功能?
让我们说这是一个众所周知的事实."重命名"意味着Swift假装Objective-C Bool属性的名称is...
即使它没有开始.但是#keyPath
当涉及KVO和属性设置器名称时,该机制没有获得备忘录,并且实现KVO观察的属性设置器纯粹是一个Objective-C功能,所以你必须使用属性/ setter 的真实名称,即Objective-C名称,以便与Objective-C的通信正确地用于KVO观察目的.
我已经提交了一份关于它的错误报告(https://bugs.swift.org/browse/SR-2415),理由是Swift可以对此表现得更聪明一点,但是直到Swift团伙回应,这只是你的事情.了解和处理.
是bug还是功能?
让我们说这是一个众所周知的事实."重命名"意味着Swift假装Objective-C Bool属性的名称is...
即使它没有开始.但是#keyPath
当涉及KVO和属性设置器名称时,该机制没有获得备忘录,并且实现KVO观察的属性设置器纯粹是一个Objective-C功能,所以你必须使用属性/ setter 的真实名称,即Objective-C名称,以便与Objective-C的通信正确地用于KVO观察目的.
我已经提交了一份关于它的错误报告(https://bugs.swift.org/browse/SR-2415),理由是Swift可以对此表现得更聪明一点,但是直到Swift团伙回应,这只是你的事情.了解和处理.