gpt4 book ai didi

ios - 将委托(delegate)协议(protocol)一致性添加到纯 swift 类

转载 作者:行者123 更新时间:2023-12-05 00:43:42 26 4
gpt4 key购买 nike

我使用的包声明了一个我无法修改的开放类 A。

在我的代码中,我想将 B 类声明为从该 A 类继承,并且还符合委托(delegate)协议(protocol)(在我的例子中为 HMHomeManagerDelegate)。

B 类:A,HMHomeManagerDelegate {

编译器告诉我:“不能在 Swift 中声明符合 'NSObjectProtocol';'HomesList' 应该继承 'NSObject'” - 这是因为 HMHomeManagerDelegate 继承自 NSObjectProtocol,因此我将在 B 中提供所有 NSObjectProtocol 所需的方法。

但这意味着大量的样板代码(其中一些是不平凡的)......

有没有更好的模式?

最佳答案

一种可能的选择是创建一个单独的类MyHome,它实现了HMHomeManagerDelegate,然后在B类中使用它。

class MyHome: NSObject, HMHomeManagerDelegate { ... }

class B: A {
let myHome = MyHome()

// and all communication with HomeKit will go through MyHome class
// ...
}

如果你的项目很小,我猜 MyHome 看起来就像一个无用的包装器。但在更大的应用程序中,我可以想象 MyHome 负责与 HomeKit 的便捷通信,因此 class B 做出决定,而 MyHome 为它服务(准备/修改一些传入/传出 HomeKit 的数据)。

关于ios - 将委托(delegate)协议(protocol)一致性添加到纯 swift 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68912716/

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