我想制定一个只能由UIlabels和UIButton遵循的协议,有办法吗?
示例:
protocol MyProtocol {
func setTextValue()
}
我希望MyProtocol仅由UILabel和UIButton访问,而没有其他类
答案 0 :(得分:1)
我想制定一个只能由UIlabels和UIButton遵循的协议,有办法吗?
哪个只能?不直接,不。您不能向其他程序员强加合同,以使程序员不能使其他某个类采用您的协议(例如,如果发生这种情况,则迫使编译器投诉)。
但是也许您的意思是哪个是仅“符合”(即被采用)。在那种情况下,当然可以。没有什么可以阻止 you 声明协议,然后声明您自己,UILabel和UIButton 要做采用它(而不是声明其他任何类采用它)。随便吧。
答案 1 :(得分:0)
扩展程序可能是一个更好的解决方案,特别是在迅速的情况下,具体取决于您要执行的操作。
extension UILabel {
func greenBackground() {
self.backgroundColor = .green
}
}
然后您可以在任何UILabel上的项目中的任何地方使用它,如下所示:
let label = UILabel()
label.greenBackground()