千家信息网

IOS开发之Target-Action模式有什么用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下IOS开发之Target-Action模式有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!该模式主要是为了减少模块之间代码耦合性,以及增强模块内代码之间的内聚
千家信息网最后更新 2026年11月01日IOS开发之Target-Action模式有什么用

小编给大家分享一下IOS开发之Target-Action模式有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

该模式主要是为了减少模块之间代码耦合性,以及增强模块内代码之间的内聚性.

让我们来看看一个实例:

1:假设有这么一个需求:我们点击一个视图对象,可以改变该视图的颜色,这个对于初学者来说是一件非常容易做到的事,只要在这个视图类中重写:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函数,然后改变该视图的背景色即可,可是这时候又有了新的需求,一部分人需要在点击该视图改变该视图的颜色,一部分人需要在点击该视图时改变该视图的位置,为了让不同对象执行不同的事件,在实例化该视图类对象时需要指定该对象感兴趣的事件,对于这个需求我们可以通过定义枚举变量作为该对象的数据成员,并在初始化的时候指定枚举值(即指定感兴趣的事件),同时需要重写-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函数,让它对不同的枚举值,执行不同的功能,假设这个时候我们又需要在点击该视图对象时,执行一个翻转功能,我们得又去修改该视图内的具体实现功能,这样代码之间的耦合性就比较大,移植起来就很不方便(试想这样的一个场景,假设别人的app需要你写好的这个视图类,但是别人不需要你视图类中事件方法,则需要修改该视图类,难免发生一些错误),解决这个问题的方法就是Target-Action模式,直接看代码:

//主视图头文件

#import @interface MainViewController : UIViewController@end

//主视图实现

#import "MainViewController.h"#import "MyView.h"@implementation MainViewController-(id)init{    self= [super init];    if (self)    {            }    return self;}-(void)viewDidLoad{    MyView * view1 = [[MyView alloc]initWithFrame:CGRectMake(10, 20, 100, 100) andTarget:self andAction:@selector(changeColor:)];        [self.view addSubview:view1];        MyView * view2 = [[MyView alloc]initWithFrame:CGRectMake(10, 20, 100, 100) andTarget:self andAction:@selector(moveFrame:)];    [self.view addSubview:view2];    }-(void)changeColor:(UIView *)aView{    NSLog(@"buttonClick");    int red = arc4random()%255;    int green = arc4random()%255;    int blue = arc4random()%255;    aView.backgroundColor = [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1.0];}-(void)moveFrame:(UIView *)aView{    aView.frame = CGRectMake(arc4random()%320, arc4random()%480, 100, 100);}@end

//测试视图类头文件

#import @interface MyView : UIView{    id _target;    SEL _action;}-(id)initWithFrame:(CGRect)frame andTarget:(id)target andAction:(SEL)action;@property (assign,readwrite,nonatomic)id deledate;@end

////测试视图类实现

#import "MyView.h"@implementation MyView-(id)initWithFrame:(CGRect)frame andTarget:(id)target andAction:(SEL)action{    self = [super initWithFrame:frame];    if (self)    {        _target = target;        _action = action;    }    self.backgroundColor = [UIColor blueColor];    return self;}-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    [_target performSelector:_action withObject:self];}@end

看完了这篇文章,相信你对"IOS开发之Target-Action模式有什么用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

视图 对象 模式 不同 事件 代码 之间 功能 需求 开发 主视图 兴趣 函数 实例 文件 方法 时候 模块 篇文章 颜色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 互联网的科技 科技和互联网公司 广州互联网科技公司 有马互联网科技 互联网科技的英文 奇士达互联网科技 互联网金融和金融科技 互联网经济与金融科技 互联网公司科技股 崇明区互联网教育科技诚信经营 中国互联网十大科技股排名 伊宁互联网科技做什么的 山东子淼互联网科技有限公司 21世纪互联网科技成就 上海创道互联网络科技有限公司 卡尔迅互联网科技有限公司 保山浩联互联网科技有限公司 10位科技互联网大佬 武汉亿视互联网科技有限公司 深圳恒合互联网络科技有限公司 金融科技 互联网金融 安徽鑫晟辉互联网科技 互联网科技公司的市场部门 卫星互联网科技股票 昭通云南众福互联网科技有限公司 亳州好赞互联网科技有限公司 浙南科技城互联网大厦建设工程 互联网时代科技型公司的机会 好易买互联网科技
0