カスタムクラスのDelegate作成

2010/07/06

カスタムクラスにdelegateを実装してみる。

.hファイル

@protocol LoginViewControllerDelegate;

@interface LoginViewController : UIViewController {
    id  delegate;
}

@property (nonatomic, assign) id <LoginViewControllerDelegate> delegate;

-(IBAction) changeView:(id)sender;

@end

@protocol LoginViewControllerDelegate
-(void) logout;
@end

・デリゲートのプロトコル

@protocol デリゲート名;

・デリゲートのインターフェイス

id <デリゲート名> delegate;

・デリゲートのgetter、setter

@property(nonatomic, assign) id <デリゲート名> delegate

assignしてsetterで単純代入している。 retainにしないのは、循環参照になりオブジェクトが解放されずメモリリークになるかららしい。 ※参考:delegate オブジェクトは retain すべきではない

・デリゲートメソッド、プロパティの宣言

@protocol デリゲート名 ... @end