menu
書いてる野郎
orebike@gmail.com
2012-03-09
Javaのインタフェースと同じ機能の何かだよ。
つまり、実装継承無しの多重継承。あるプロトコルをくっつけたら実装側はそれをかならず実装しなければならない。
使う側は絶対に実装してあるものとして使える。
クラス宣言のときにする。
@interface Hoge : NSObject <HogeDelegate, PiyoDelegate>{ } @end
スーパークラスの記述に続き括弧で括ってプロトコルをコンマ区切りでズラズラ書く。 今までセパレータがスペースとコロンだったのにここでいきなりコンマ参上。
プロトコルは内部挙動の取り換えのために外部から導入するロジックの塊として使われ方が多いので、~Delegateという名前が多い。 Javaでいうならばインタフェースに~ableというものが多いのと似ている。
あとは宣言と実装でそれぞれプロトコルのシグネチャに合わせたメソッドを宣言と実装すればよろし。
プロトコルそのものを作る場合は例の@に続きprotocolキーワードを書いて
@protocol HogeDelegate - (int)piyopiyo:(int)fuga; - (int)abc:(int)xyz; @end
あとはメソッド宣言と同じでシグネチャをズラズラ