gpt4 book ai didi

Swift:符合特定类并同时符合多种协议(protocol)的属性

转载 作者:IT王子 更新时间:2023-10-29 05:04:10 25 4
gpt4 key购买 nike

在 Objective-C 中,可以这样写:

@property(retain) UIView<Protocol1, Protocol2, ...> *myView;

但是我如何快速编写这段代码呢?

我已经知道如何使一个属性符合许多协议(protocol),但它不能通过使用继承来工作:

var myView: ??? protocol<Protocol1, Protocol2, ...>

编辑:

我使用了许多 UIView 子类型,例如 UIImageViewUILabel 或其他,我需要使用一些 UIView 属性加上协议(protocol)中定义的一些方法。在最坏的情况下,我可以创建一个具有所需属性的 UIViewProtocol,但我知道是否可以在 Swift 中声明一个属性/变量,其中包含一个类型和一些协议(protocol)。

最佳答案

您可以使用 where clause 对通用类执行此操作:

A where clause enables you to require that an associated type conforms to a certain protocol, and/or that certain type parameters and associated types be the same.

要使用它,请将您的属性定义在具有 type constraint 的泛型类中。检查 type parameter 是否为您的属性匹配您想要的基类和协议(protocol)。

对于您的具体示例,它可能看起来像这样:

class MyViewController<T where T: UIView, T: Protocol1, T: Protocol2>: UIViewController {
var myView: T

// ...
}

关于Swift:符合特定类并同时符合多种协议(protocol)的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767156/

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