不能在DelegateProxyType(rxSwift)中使用proxyForObject函数

我尝试将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) } 

我得到消息“断言失败::文件/Users/Agentum/Documents/Xcode/Telemetry/Pods/RxCocoa/RxCocoa/Common/DelegateProxyType.swift”。

我应该如何使用proxyForObject()函数来正确迁移委托?

您应该在proxyForObject上调用RxSocketManagerDelegateProxy ,而不是DelegateProxyType

 extension SRWebSocket { public var rx_delegate: DelegateProxy { return RxSocketManagerDelegateProxy.proxyForObject(self) // instead of: `return DelegateProxyType.proxyForObject(self)` } }