不能在 DelegateProxyType (rxSwift) 中使用 proxyForObject 函数
Posted
技术标签:
【中文标题】不能在 DelegateProxyType (rxSwift) 中使用 proxyForObject 函数【英文标题】:Can not use proxyForObject function in DelegateProxyType (rxSwift) 【发布时间】:2016-07-12 10:00:02 【问题描述】:我尝试将 SRWebSocket 的委托迁移到 observable。这是我的 RxSocketManagerDelegateProxy.swift:
class RxSocketManagerDelegateProxy: DelegateProxy, DelegateProxyType
static func currentDelegateFor(object: AnyObject) -> AnyObject?
let socket: SRWebSocket = object as! SRWebSocket
return socket.delegate
static func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject)
let socket: SRWebSocket = object as! SRWebSocket
socket.delegate = delegate as? SRWebSocketDelegate
extension SRWebSocket
public var rx_delegate: DelegateProxy
return DelegateProxyType.proxyForObject(self)
// ...
问题出在 proxyForObject 函数中。它不像上面那样编译。我收到警告“静态成员 'proxyForObject' 不能用于 'DelegateProxyType.Protocol' 类型的实例”。
当我尝试像这样使用 proxyForObjectFunction 时(尽管它已被弃用):
public var rx_delegate: DelegateProxy
return proxyForObject(RxSocketManagerDelegateProxy.self, self)
我收到消息“断言失败: : file /Users/Agentum/Documents/Xcode/Telemetry/Pods/RxCocoa/RxCocoa/Common/DelegateProxyType.swift”。
我应该如何使用 proxyForObject() 函数来正确迁移委托?
【问题讨论】:
【参考方案1】:您应该在RxSocketManagerDelegateProxy
上调用proxyForObject
,而不是DelegateProxyType
。
extension SRWebSocket
public var rx_delegate: DelegateProxy
return RxSocketManagerDelegateProxy.proxyForObject(self)
// instead of: `return DelegateProxyType.proxyForObject(self)`
【讨论】:
非常感谢!以上是关于不能在 DelegateProxyType (rxSwift) 中使用 proxyForObject 函数的主要内容,如果未能解决你的问题,请参考以下文章
RX Observables - 如果我不能改变价值,那么“随着时间的推移”有啥意义?
RTX 3080出生两个月卒!Radeon RX 6800/6800 XT首发评测