Swift属性观察者在协议扩展?

Swift属性观察者在协议扩展?,第1张

概述考虑以下几点: protocol ViewControllable: class { typealias VM: ViewModellable var vm: VM! { get } func bind()}extension ViewControllable { var vm: VM! { didSet { bind() } }} 我试图观 考虑以下几点:
protocol VIEwControllable: class {  typealias VM: viewmodellable  var vm: VM! { get }  func bind()}extension VIEwControllable {  var vm: VM! {    dIDSet {      bind()    }  }}

我试图观察vm属性,并在注入时调用bind.但是这不编译错误说:

Extensions may not contain stored propertIEs

这是有道理的,因为协议不能强制要存储或计算的属性.

这是否可以在不引入类继承的情况下完成?

换句话说,我可以观察协议扩展中的属性的更改吗?

不,这是明确禁止的.见 Extension: Computed Properties:

Extensions can add new computed propertIEs,but they cannot add stored propertIEs,or add property observers to existing propertIEs.

请记住,如果这是合法的,它会对执行顺序增加一些不平凡的混乱.想象一下,有几个扩展添加了dIDSet,实际的实现也有一个doSet.他们应该执行什么顺序?这并不意味着它是不可能实现的,但如果我们有这样的话可能会有点令人惊讶.

总结

以上是内存溢出为你收集整理的Swift属性观察者在协议扩展?全部内容,希望文章能够帮你解决Swift属性观察者在协议扩展?所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存