swift protocal不支持直接使用let修饰变量,应该使用{ get }
代替。
协议不应该简单定义一个值是常量,也不应该定义一个常量。实现的具体细节应该由它的类/结构来决定。
例如:
protocol MyProtocol {
var someProperty: String { get }
}
struct MyStruct: MyProtocol {
let someProperty: String
}
struct OtherStruct: MyProtocol {
let i: Int
var someProperty: String { return "\(i)" }
}
例如修饰weak:
protocol VideoListPresentableListener: class, UITableViewDelegate, UITableViewDataSource {
var tableView: UITableView? { get set }
}