Речь идет об ошибке, обнаруженной в https://github.com/RxSwiftCommunity/RxStarscream/pull/23.
Я пытаюсь обобщить тип, чтобы издеваться над классом, на котором он основан. Это означает, что я хочу перейти от конкретной реализации к протоколу.
Исходный класс выглядит так:
open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelegate { ... }
...
}
Я хочу заменить это протоколом, который уже расширяется WebSocket
:
public protocol WebSocketClient : AnyObject {
...
}
Это означает, что я заменяю
public class RxWebSocketDelegateProxy: DelegateProxy<WebSocket, NSObjectProtocol>, ... {
...
}
с участием
public class RxWebSocketDelegateProxy: DelegateProxy<WebSocketClient, NSObjectProtocol>, ... {
...
}
Все это кажется достаточно простым - WebSocketClient
предоставляет всю необходимую здесь функциональность. Удивительно, но я получаю сообщение об ошибке
'DelegateProxy' requires that 'WebSocketClient' be a class type
Я не уверен, что мне здесь не хватает, и был бы признателен за указатели!
Вот и все - большое спасибо!
Попробуйте использовать @objc, как показано ниже:
@objc public protocol WebSocketClient : AnyObject {
---
}
Похоже, это связано с протоколы, не соответствующие сами себе