gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:18:50 26 4
gpt4 key购买 nike

我尝试将 SRWebSocket 的委托(delegate)迁移到可观察的。这是我的 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() 函数才能正确迁移委托(delegate)?

最佳答案

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

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

关于ios - 不能在 DelegateProxyType (rxSwift) 中使用 proxyForObject 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38325626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com