delegateの書き方

Objective-Cでdelegateを使うときのメモです。
「delegateとは」といった説明は何にもありません。単に書き方だけです。

delegateの呼び出し側(「XXX」とする)

// XXX.h
@protocol xxxDelegate
-(void)foo;
@end

@interface XXX : スーパークラス名
@property (retain, nonatomic) id <xxxDelegate> delegate;
@end
// XXX.m
@synthesize delegate;

// 呼び出す場所で
[delegate foo];

呼び出される側(「YYY」とする)

// YYY.h
#import "XXX.h"
@interface YYY: スーパークラス名 <xxxDelegate>

// delegateメソッドを宣言
-(void)foo;
// YYY.m

XXX *xxx;             // インスタンスを作って
xxx.delegate = self;  // 自分を呼び出すようにしておく

// 実装
- (void)foo
{
…
}

コメント