gpt4 book ai didi

ios - 是否可以在类协议(protocol)上创建 willSet 的默认实现

转载 作者:行者123 更新时间:2023-11-28 08:51:37 25 4
gpt4 key购买 nike

我想做的是在一个对象被替换为我的服务对象的委托(delegate)时通知它。我想知道是否有一种方法可以创建 willSet 的默认提示,这样我就不必为我创建的每个服务对象重复代码:

protocol BaseServiceDelegate: class {
var delegate: BaseServiceDelegate? {get set}
func servicesDelegateReferanceWasRemoved(service: BaseServiceDelegate)
}

extension BaseServiceDelegate {

willSet(newValue){
delegate?.servicesDelegateReferanceWasRemoved(self)
self = newValue
}
}

我真的不确定从哪里开始扩展的语法或者这是否可能。上述代码的错误在“willSet”行:“Exspected declaration”感谢您的时间仍然不确定它是否可能,但我做了一些编辑以确保您可以访问定义的委托(delegate)对象

最佳答案

我能找到的最佳答案是定义一个基本协议(protocol):

protocol baseProtocol {
func informOfAction()
}

然后在您也希望具有此功能的代表上实现此功能:

protocol childProtocol: baseProtocol {
func somethingHappend()
func somethingElseHappend()
}

并且当您创建符合 childProtocol 的对象时,自定义将在那里设置

var delegate: childProtocol? {
willSet{
delegate?.informOfAction()
}
}

没有我想要的那么好,但也不算太糟糕,在我所有类似于“委托(delegate)”的对象上多了 3 行

关于ios - 是否可以在类协议(protocol)上创建 willSet 的默认实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com