不能在 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 - 如果我不能改变价值,那么“随着时间的推移”有啥意义?

SDI core端口说明

关于centos7操作系统RX-DRP值每隔30s加1问题

RTX 3080出生两个月卒!Radeon RX 6800/6800 XT首发评测

如何实现模块与单片机的RX和TX连接并让它与PC机连接,就是实现TX和RX的分时复用功能

linux下用ifconfig看到RX发生很多errors.不知道是啥原因