ios – “hidden”vs #keyPath(UIView.isHidden)

ios – “hidden”vs #keyPath(UIView.isHidden),第1张

概述使用#keyPath(UIView.isHidden)的KVO观察者不起作用,但“隐藏”起作用. 很奇怪.是bug还是功能? child.addObserver(self, forKeyPath: "hidden", options: [.initial,.new], context: nil);override func observeValue(forKeyPath keyPath: St 使用#keyPath(UIVIEw.isHIDden)的KVO观察者不起作用,但“隐藏”起作用.

很奇怪.是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)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存