protocolについて

所謂、interface。
但し、必ず実装しないといけないメソッドと任意実装を指定可能。

#import <Foundation/Foundation.h>

@protocol MyProtocol

@required
//必須実装のプロトタイプ

@optional
//任意実装のプロトタイプ

@end

インスタンスが指定プロトコルインスタンスであるかはconformsToProtocolで確認可能

if( [myObj  conformsToProtocol:@protocol(myProtocol)]){
  //myObjはmyProtocolのインターフェースを持っている
}

インスタンスがオプションメソッドを実装しているかは

if( [myObj respondsToSelector:@selector(optionalMethod)] ){
   //myObjはoptionalMethodを実装している
}

として確認可能。