标签:ios 设计模式 targetaction
iOS-target-action设计模式了解
target-action的设计模式的本质就是在host中产生的事件调用target的action方法。
下面我们通过一个UIView来实现UIButton的点击事件。
@interface CustomButton : UIView -(void)addCustomButton:(id)target andSelector:(SEL)action; @end @implementation CustomButton{ id _target; SEL _action; } -(void)addCustomButton:(id)target andSelector:(SEL)action{ if (target==_target) { return; } _target = target; _action = action; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{} -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ if (_target) { if ([_target respondsToSelector:_action]) { [_target performSelector:_action withObject:self]; } } }
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CustomButton *btn = [[CustomButton alloc]initWithFrame:CGRectMake(0, 100, 200, 200)]; btn.backgroundColor = [UIColor redColor]; [btn addCustomButton:self andSelector:@selector(hello:)]; [self.view addSubview:btn]; } -(void)hello:(id)sender{ NSLog(@"hello customer "); }
2015-03-29 17:09:03.803 Target_action[1863:89334] hello customer
运行内存状态:
标签:ios 设计模式 targetaction
原文地址:http://blog.csdn.net/fanyiyao980404514/article/details/44728449