Swift协议仅符合两个特定的类

时间:2019-03-31 15:33:08

标签: ios swift protocols

我想制定一个只能由UIlabels和UIButton遵循的协议,有办法吗?

示例:

protocol MyProtocol {
    func setTextValue()
}

我希望MyProtocol仅由UILabel和UIButton访问,而没有其他类

2 个答案:

答案 0 :(得分:1)

  

我想制定一个只能由UIlabels和UIButton遵循的协议,有办法吗?

哪个只能?不直接,不。您不能向其他程序员强加合同,以使程序员不能使其他某个类采用您的协议(例如,如果发生这种情况,则迫使编译器投诉)。

但是也许您的意思是哪个仅“符合”(即被采用)。在那种情况下,当然可以。没有什么可以阻止 you 声明协议,然后声明您自己,UILabel和UIButton 要做采用它(而不是声明其他任何类采用它)。随便吧。

答案 1 :(得分:0)

扩展程序可能是一个更好的解决方案,特别是在迅速的情况下,具体取决于您要执行的操作。

extension UILabel {
    func greenBackground() {
        self.backgroundColor = .green
    }
}

然后您可以在任何UILabel上的项目中的任何地方使用它,如下所示:

let label = UILabel()
label.greenBackground()