【发布时间】:2017-06-01 12:12:49
【问题描述】:
protocol AProtocol: BProtocol {
/// content to be shown on disclaimer Label of cell
var disclaimer: String {get set}
var cellDisclaimerAttributed: NSAttributedString {get}
var showSelection: Bool {get set}
var isReadMore: Bool {get}
}
我想让变量成为可选的,这样我就不需要在每次符合协议后都实现所有变量。就像在 Objective-C 中我们对方法所做的那样:
protocol AProtocol: BProtocol {
/// content to be shown on disclaimer Label of cell
optional var disclaimer: String {get set}
optional var cellDisclaimerAttributed: NSAttributedString {get}
optional var showSelection: Bool {get set}
optional var isReadMore: Bool {get}
}
有可能吗?
【问题讨论】:
-
您给出的第二个示例的错误消息是 "'optional' 只能应用于 @objc 协议的成员"(提示提示)
-
以上链接仅讨论方法。 @MartinR
-
@Ren:你确定吗?我刚试过
@objc protocol MyProtocol { @objc optional var disclaimer: String { get set } }和class Foo: MyProtocol { }。 -
@Ren:如果 AProtocol 从 BProtocol 继承,那么当然 both 协议(和可选属性)必须用
@objc标记。