Objective-C

プロトコルの例

// プロトコルを定義する
@protocol MyProtocol <NSObject, NSCopying>
- (void)methodForRespond;
@end

// プロトコルを導入する
@interface MyObject <MyProtocol>
...
@end
類似した機構に実装をオプションにできるinformalプロトコルがある。これは後述のカテゴリのうち、インターフェース定義のみを利用する方法で、利用側は実装状態をリフレクションで調査して正当な場合のみ呼びだす。
// ここでは「NSObjectにはtransferAcceptable:が定義されている」と宣言している
// 実際には対応する実装を用意する義務がないため、NSObjectを継承したオブジェクトがそれを行なった場合のみ利用できる
@interface NSObject (OptionalMethods)
- (BOOL)transferAcceptable:(id)obj;
@end

- (void)method {
    id val,obj;
    ...
if([obj respondsToSelector: @selector(transferAcceptable:)]) {
    [obj transferAcceptable: val];
    ...
}

戻る