[Objective-C] target-Action
1. target-Action
대상을 지정하여 특정 동작을 취하게 설정함
흔히 사용하는 형태는 버튼을 클릭했을때 클릭 함수를 구현하여 동작하게 하는 것
objective-C에서 selector문법이 이에 해당된다.
2. 샘플 코드
@interface Dialog :NSObject
-(void)close;
@end
@implementation Dialog
-(void)close
{
NSLog(@"Dialog close");
}
@end
@interface Button:NSObject
{
id target;
SEL action;
}
-(void) click;
-(void) addTarget:(id)t action:(SEL)a;
@end
@implementation Button
-(void)click
{
// 자신이 클릭된 상황을 외부에 알림. 객체가 이벤트 발생한다라고 표현
[target performSelector:action];
}
-(void)addTarget:(id)t action:(SEL)a
{
target = t;
action = a;
}
@end
int main()
{
//Dialog* dlg = [Dialog alloc];
id n = (id)10;
NSLog(@"%d",(int)n);
id dlg = [Dialog alloc]; // void 포인터, 모든 객체의 주소를 담음, 값을 담으려면 casting 필요
Button* btn = [Button alloc];
[btn addTarget:dlg action:@selector(close)];
// 사용자가 버튼을 클릭하면 아래 함수가 호출된다고 가정
[btn click];
[btn release];
[dlg release];
dlg = nil;
return 0;
}