Swift协议仅符合两个特定类

问题描述 投票:-3回答:2

我想制定一个只能通过UIlabels和UIButton进行协议的协议,有没有办法?

示例:

protocol MyProtocol {
    func setTextValue()
}

我希望我的协议只能由UILabel和UIButton访问,而不能访问其他类

ios swift protocols
2个回答
1
投票

我想制定一个只能通过UIlabels和UIButton进行协议的协议,有没有办法?

哪个只能?不直接,没有。你不能强加给另一个程序员一个合同,这样程序员就不能让其他一些类采用你的协议(例如,如果发生这种情况,就强迫编译器抱怨)。

但也许你的意思是哪个只是“符合”(即采用)。在那种情况下,当然。没有什么可以阻止你声明一个协议,然后自己声明UILabel和UIButton确实采用它(而不是声明任何其他类采用它)。去做就对了。


0
投票

扩展可能是一个更好的套件,特别是在swift中,取决于你想要做什么。

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

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

let label = UILabel()
label.greenBackground()
© www.soinside.com 2019 - 2024. All rights reserved.