Objective-C 基礎(13)- プロトコル




複数のクラスを作るとき、各クラスが必ず実装しなければならないメソッドがある場合にプロトコルを使用します。プロトコルを使用しなくても各クラスにメソッドを実装すればよいのですが、プロトコルを使用すればメソッドを実装していない時に警告が出るという点で「実装を義務付ける」ことができます。
(他のプログラム言語ではインターフェースと呼ばれているものと同等です)

§1 単純なプロトコルの実装例

プロトコルは「@protocol」というコンパイラディレクティブを使って定義します。上記では、「Style」というプロトコルを定義して、drawメソッドの実装を義務付けています。

Styleをスーパークラスとして継承する方法でも同じような仕組みを実現できます。クラスの結びつきが強くて共通の処理が多い場合は継承、一部メソッドなどの構成を統一したい場合はプロトコルを使うと良いと思います。

§2 プロトコルのメソッド実装を必須にしない

通常、プロトコルで宣言されるメソッドは、採用先のクラスで実装が必須になりますが、必須にしない方法もあります。

プロトコルのメソッド宣言の部分に、「@optional」というコンパイラディレクティブを指定すると、そのメソッドの実装は必須ではなくなり、実装してもしなくてもよいメソッドとなります。また明示的に必須を表すには「@required」コンパイラディレクティブを指定します。

§3 プロトコルの継承

プロトコルは別のプロトコルを採用することができます。この場合、プロトコル自身は採用したプロトコルのルールを引き継ぐことになるので、プロトコルの継承と呼ばれます。以下の例ではProtocol_BはProtocol_Aを採用(継承)しているため結果的にmethod_A、method_Bの実装が必須となります。

§4 複数プロトコルを採用する

プロトコルは複数採用することができます。記述の方法は以下のようになります。

Objective-C 基礎 目次

以下の記事も参考にして頂ければと思います。
Objective-C 基礎(1)- Xcodeのインストールとプロジェクトの作成
Objective-C 基礎(2)- Objective-Cの概要とメソッドの呼び出し
Objective-C 基礎(3)- クラス定義の方法
Objective-C 基礎(4)- クラスの使い方
Objective-C 基礎(5)- クラスメソッドとインスタンスメソッド
Objective-C 基礎(6)- 変数のスコープとプロパティ
Objective-C 基礎(7)- 変数のデータ型
Objective-C 基礎(8)- 文字列とNSStringクラス
Objective-C 基礎(9)- 可変文字列とNSMutableStringクラス
Objective-C 基礎(10)- Objective-Cの配列
Objective-C 基礎(11)- Objective-Cの連想配列
Objective-C 基礎(12)- ループ処理
Objective-C 基礎(13)- プロトコル


シェアして頂けると嬉しいです

















チャーム本店



価格.com ブロードバンド

価格.com 自動車保険









■コメントはお気軽にどうぞ