ObjCのdelegateの作例サンプル

Filed under Objective-C
Tagged as , ,

デリゲート(Delegate)を定義して、、ということをやろうとしたら、いろいろ忘れていたので、ちょっとメモしておきます。

ZZControllerというクラスがあり、そのクラスのある処理をDelegateとして外に委譲出来るようにしたい、というときには次のように書くことができます。

ヘッダー:ZZController.h

まずは、ヘッダー。
下記のように、デリゲート ZZControllerDelegate と、それを使うクラス ZZController を定義します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// ZZController.h
 
// クラスの前方宣言.
@class ZZController;
 
// delegate.
@protocol ZZControllerDelegate
 
- (void) doSomething:(ZZController*)controller;
 
@end
 
// class header.
@interface ZZController : NSObject
{
  id<ZZControllerDelegate> delegate;
}
 
@property (nonatomic,assign) id<ZZControllerDelegate> delegate;
 
- (void) somethingHappened;
 
@end

実装:ZZController.m

次に、実装側のソースを記述します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ZZController.m
 
#import <ZZController.h>
@implementation ZZController
 
@synthesize delegate;	// for property.
 
// デリゲートの使用例.
- (void) somethingHappened{
  if( delegate ){
    [self.delegate doSomething:self];
  }
}
 
@end

使い方のサンプル

AAManagerが上記デリゲートプロトコルを実装する場合のサンプルコードです。

1
2
3
4
5
6
// AAManager.h
#import <ZZController.h>
 
@interface AAManager : NSObject <ZZControllerDelegate>
 
@end
1
2
3
4
5
6
7
8
9
10
// AAManager.m
#import <AAManager.h>
 
@implementation AAManager
 
- (void) doSomething:(ZZController*)controller{
  NSLog(@"Oh! What's happened?");
}
 
@end

[AD]

↓最近はエンジニアと言えどもデザインセンスは必須です!よね?

インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

著者/訳者:Susan Weinschenk

出版社:オライリージャパン( 2012-07-14 )

定価:

Amazon価格:¥ 3,024

大型本 ( 288 ページ )

ISBN-10 : 4873115574

ISBN-13 : 9784873115573


↓今時のプリンタはインクと同じくらいの価格!!

Canon インクジェットプリンター複合機 PIXUS MG3130

Canon インクジェットプリンター複合機 PIXUS MG3130

中古価格: ¥ 4,000 より

Amazon価格:¥ 18,000

カテゴリ:Personal Computers

発売日:2011-10-27


Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)