プロトコルでメソッドを定義して、コードが他の人によって実装されたメソッドを呼び出すことができるようにします。あなたとあなたのプロトコルを実装する開発者との間の「契約」は次のようになります。
- プロトコルを定義し、
- 他の誰かがあなたのプロトコルを実装し、
- 他の誰かがあなたのプロトコルを実装するオブジェクトを作成し、それをあなたに渡します。
- 実装を知らなくても、プロトコルのメソッドを呼び出すことができます。
プロトコルのメソッドを呼び出すには、それを実装するオブジェクトのインスタンスが必要です。プロトコルを定義することの要点は、プロトコルを実装するクラスに関する知識をコードから削除することです。取得するクラスがわかっている場合は、プロトコルをスキップして、クラスに直接プログラムすることもできます。ただし、自分の を呼び出したい場合はinit
、そのクラスを知っているか、他の誰かが がまだ呼び出されていないalloc
-ed オブジェクトを渡さなければなりません。init
どちらの選択肢も良い考えではありません.1つ目はプロトコルを持つ目的を殺し、2つ目は呼び出し元が部分的に初期化されたオブジェクトを扱うことを強制します.
プロトコルに非構成メソッドを含めることを妨げるものではないことに注意してくださいinit
。特定の情報を使用してすべてのオブジェクトを構成する必要がある場合は、ユーザーに必要なものを何でも実装させ、プロトコルにメソッドをinit
追加して、メソッドconfigureWith:...
を知らずにオブジェクトを構成するプロセスinit
。