加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift:符合特定类的属性,同时符合多个协议

发布时间:2020-12-14 05:58:20 所属栏目:百科 来源:网络整理
导读:在Objective-C中,可以写出类似的东西: @property(retain) UIViewProtocol1,Protocol2,... *myView; 但是我该怎么写这个代码呢? 我已经知道如何使属性符合许多协议,但是通过使用继承不起作用: var myView: ??? protocolProtocol1,... 编辑: 我使用许多U
在Objective-C中,可以写出类似的东西:
@property(retain) UIView<Protocol1,Protocol2,...> *myView;

但是我该怎么写这个代码呢?

我已经知道如何使属性符合许多协议,但是通过使用继承不起作用:

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

编辑:

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

您可以使用通用类使用 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是否与您所需的基类和协议匹配。

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

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

    // ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读