2017-07-19 8 views
1

私はSRWebSocketDelegateプロトコルを実装するswiftをクラスに持っています。私はそれが任意の方法webSocketDidOpenだ実装しようとすると、私は次の警告を得る:私は自分のコードを実行したときに またenter image description hereインスタンスメソッドがオプションとほぼ一致します。要件

、webSocketDidOpenの実装が呼び出され、コードが直接webSocket(_ webSocket: SRWebSocket, didReceiveMessageWith string: String)

どのように行くなっていませんObjective-Cで書かれたプロトコルのオプションのメソッドを実装し、これらの警告を取り除くのですか?

ありがとうございます!

+1

"名前を変更する"修正プログラムを選択するとどうなりますか? –

+0

@robmayoff、それはSRWebSocketDelegateのメソッドを実装するのではなく、ローカルインスタンスメソッドとして作成しませんか? – Exception

+0

これはすでにプロトコル実装ではありません。それは警告があなたに言っていることです。 fixitは要件に合致させようとしています。 –

答えて

2

SRWebSocket.hにはNS_ASSUME_NONNULL_BEGINというアノテーションが付けられているため、デフォルトではすべての値はnonnullです。

- (void)webSocketDidOpen:(SRWebSocket *)webSocket; 

としてインポートされます::

func webSocketDidOpen(_ webSocket: SRWebSocket) 

しかし、あなたが実装さ:

func webSocketDidOpen(_ webSocket: SRWebSocket!) 

SRWebSocketSRWebSocket!と同じタイプではありません。それは、このことを意味し!を削除します。これは、名前変更の修正があなたのために行うものです。

+0

それはそれほど小さな問題ではないことに気付かなかった。ありがとう! – Exception

+0

Robさんが問題を解決した場合は、彼の答えの横にあるチェックマークをクリックしてください。 –

関連する問題