自作のProtocolを作成してデリゲート処理を行うことはよくあるだろう。 そのときデリゲートは以下のように弱参照にすべきケースが多い。 何故なら、こうしておかないと循環参照が発生してしまうことがあるからだ。 'weak' cannot be applied to non-class type 'TestClassDelegate' クラスじゃないと弱参照は出来ないと言われても、Protocolをクラスに変えるわけにはいかない。 どうしたものかと調べてみると、stackoverflowで答えが見つかった。 How can I make a weak protocol reference in 'pure' Swift (w/o @objc) - Stack Overflow Protocolをクラスとして定義すれば良いとのこと。 実際に試してみた。 これでコンパイルエラーは無くなった。