【发布时间】:2019-03-31 15:33:08
【问题描述】:
我想做一个只能被 UIlabels 和 UIButton 遵守的协议,有没有办法?
例子:
protocol MyProtocol {
func setTextValue()
}
我希望 MyProtocol 只能被 UILabel 和 UIButton 访问,而没有其他类
【问题讨论】:
-
正如 matt 所指出的,目前不可能(在 Swift 的类型约束中没有“或”的构造),但我很好奇你想用这个实现什么。感觉几乎可以肯定,重载或完整类型(很可能是结构或最终类)会更好地为您服务。如果你能做到这一点,你会写什么代码来使用它?
-
我想在这两个类中设置一个值,并根据该值设置一些常见属性,例如标题、文本颜色等。
-
@EkjotKaur 所以你问了一个 x-y 问题。如果那是你的目标,你应该问这个问题,而不是假设一个解决方案并询问该解决方案是否可行。
-
是的,这听起来是一个非常简单的问题。只需制作一个涵盖您想要的东西(标题,文本颜色等)的协议,并符合您想要的类。您为什么要尝试禁止其他类型符合您的协议?
-
@matt,我知道有很多方法可以实现我想要的。但我想知道这是否可以通过协议来实现(正如我的问题“有没有办法”中提到的那样)。