Ios 使用另一协议扩展协议中定义的委托
我想用另一个协议扩展协议委托,如下所示:Ios 使用另一协议扩展协议中定义的委托,ios,swift3,Ios,Swift3,我想用另一个协议扩展协议委托,如下所示: protocol WriteableCallback: class { ... } protocol Writeable { weak var delegate: WriteableCallback? { get set } } protocol NetworkWriteablecallback: WriteableCallback { ... } protocol NetworkWriteable: Writeable { ..
protocol WriteableCallback: class {
...
}
protocol Writeable {
weak var delegate: WriteableCallback? { get set }
}
protocol NetworkWriteablecallback: WriteableCallback {
...
}
protocol NetworkWriteable: Writeable {
..
}
现在,实现NetworkWriteable相当简单:
final class DefaultNetworkWriteable: NetworkWriteable {
weak var delegate: NetworkWriteablecallback?
//type 'DefaultNetworkWriteable' does not conform to protocol 'Writeable
//because delegate should be of type 'Writeablecallback'
}
如果我写
weak var delegate: Writeablecallback?
除了我不能直接调用NetworkWriteablecallback的方法外,所有的东西都可以编译并正常工作。我知道,如果我像下面这样贬低代表
if let delegate = delegate as? NetworkWriteablecallback {
...
}
比它的作品好,但铸造不是一个好办法
还有其他建议吗?不幸的是,代表
要求声明,如果可以的话,我不知道这是件好事
我将提供一个方便,以透明的方式选出代表。通过协议扩展,这种转换成为NetworkWriteable
协议的固有行为
extension NetworkWriteable {
var networkWriteableDelegate: NetworkWriteablecallback? {
set {
delegate = newValue
}
get {
return delegate as? NetworkWriteablecallback
}
}
}
final class DefaultNetworkWriteable: NetworkWriteable {
weak var delegate: WriteableCallback?
func myfunc() {
if self.networkWriteableDelegate === self.delegate {
// always true
}
}
}