找回密码
 立即注册
首页 业界区 安全 设计模式之 Target/Action

设计模式之 Target/Action

坏级尹 前天 12:47
认真对待每时、每刻每一件事,把握当下、立即去做。
iOS 中的 Target-Action 设计模式是一种事件响应机制,用于在用户交互时触发特定对象的方法调用。
一. 基本概念

组成元素‌:

  • Target‌:接收消息的对象,通常是控制器(如UIViewController)。
  • Action‌:目标对象中待调用的方法,需符合特定签名格式(如-(void)doSomethingid)sender)。
设计目的‌:
通过解耦事件触发与处理逻辑,实现低耦合、高内聚的交互设计,典型应用于UIControl 子类(如 UIButton、UISlider)。
二、实现方式

代码绑定‌:使用 addTarget:action:forControlEvents: 方法动态关联目标与动作,例如:
  1. [button addTarget:self
  2.           action:@selector(handleClick:)
  3. forControlEvents:UIControlEventTouchUpInside];
复制代码
其中 self 为 Target,handleClick: 为Action。
Interface Builder 绑定:
通过拖拽方式在 XIB 或 Storyboard 中连接控件与控制器方法,需声明 IBAction 返回值类型以暴露接口。
三、技术细节

Action 方法签名‌:支持多种形式,包括:

  • -(void)doSomething
  • -(void)doSomethingid)sender
  • -(IBAction)doSomethingid)sender forEventUIEvent*)event
    参数 sender 为触发事件的控件,event 包含触摸信息。
事件传递机制:‌当用户操作控件时,系统调用 sendAction:to:forEvent: 方法,通过 Target 的 SEL 选择器执行对应方法。
四、扩展应用

自定义控件:‌可手动实现 Target-Action 模式,例如在自定义视图中定义 target 和 action 属性,通过 performSelector: 调用目标方法。
频率控制‌:结合 Runtime 的方法交换(Method Swizzling),可限制按钮点击频率,避免重复请求。
五、与其他模式对比

与 Delegate 区别‌:Target-Action 为单向通信,适用于简单事件;Delegate 需定义协议,适合复杂交互。
与 Block 区别‌:Block 更灵活但可能引起循环引用,Target-Action 结构更清晰。

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册