很奇怪.是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("*"); }}解决方法
Is it BUG or feature?
让我们说这是一个众所周知的事实. “重命名”意味着Swift假装Objective-C Bool属性的名称开头是……即使它没有.但是当关于KVO和属性设置器名称时,#keyPath机制没有得到备忘录,并且实现KVO观察的属性设置器调整纯粹是一个Objective-C功能,所以你必须使用属性/ setter的真实名称,即Objective-C名称,以便与Objective-C的通信正确地用于KVO观察目的.
我已经提交了一份关于它的错误报告(https://bugs.swift.org/browse/SR-2415),理由是斯威夫特可以对此表现得更聪明一些,但是直到斯威夫特团伙回应,这只是你已经知道和处理的事情.
总结以上是内存溢出为你收集整理的ios – “hidden”vs #keyPath(UIView.isHidden)全部内容,希望文章能够帮你解决ios – “hidden”vs #keyPath(UIView.isHidden)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)