Objc04
- 28. ターゲット-アクション・パラダイム
このクラスはSEL型変数action
id型変数targetをインスタンス
変数として持っている
@interface myCell : NSObject
{
SEL action;
id target;
...
}
- (void)setAction:(SEL)aSelector;
- (void)setTarget:(id)anObject;
- (void)performClick:(id)sender;
...
@end
@implementation myCell
- (void)setAction:(SEL)aSelector
{
action = aSelector;
}
- (void)setTarget:(id)anObject
{
target = anObject;
}
- (void)performClick:(id)sender
{
(void)[target performSelector:action
withObject:sender];
}
...
@end
- 30. ターゲット-アクション・パラダイム
このときの引数は
performClick:の引数が使われる
@interface myCell : NSObject
{
SEL action;
id target;
...
}
- (void)setAction:(SEL)aSelector;
- (void)setTarget:(id)anObject;
- (void)performClick:(id)sender;
...
@end
@implementation myCell
- (void)setAction:(SEL)aSelector
{
action = aSelector;
}
- (void)setTarget:(id)anObject
{
target = anObject;
}
- (void)performClick:(id)sender
{
(void)[target performSelector:action
withObject:sender];
}
...
@end
- 33. Customize...
obj
id target obj
SEL action showPanel
[button setTarget:obj];
[button setAction:@selector
(showpanel:)];
showPanel : button
button クリックでメッセージ送信
参照
ターゲット-アクション・パラダイム
ボタンが押されたり,
スライダが動かされた時
あらかじめ設定された
targetに,actionで指定
されたメッセージが
送られる
- 34. Customize...
obj
id target obj
SEL action showPanel
[button setTarget:obj];
[button setAction:@selector
(showpanel:)];
showPanel : button
button クリックでメッセージ送信
参照
ターゲット-アクション・パラダイム
メッセージの引数には
そのGUI部品のidが渡され
る
- 35. Customize...
obj
id target obj
SEL action showPanel
[button setTarget:obj];
[button setAction:@selector
(showpanel:)];
showPanel : button
button クリックでメッセージ送信
参照
ターゲット-アクション・パラダイム
これによりtargetとして
指定されたオブジェクト
では,どの部品から
どのようなメッセージを
送られたのか知る事が出
来る
- 36. Customize...
obj
id target obj
SEL action showPanel
[button setTarget:obj];
[button setAction:@selector
(showpanel:)];
showPanel : button
button クリックでメッセージ送信
参照
ターゲット-アクション・パラダイム
通常はターゲットとアク
ションの指定にそれぞれ
メッセージsetTarget:と
setAction:が使われる
カウンタ方式を利用
している場合でも,
setTarget:は引数の
オブジェクトを保持
(retain)しない