边肖将与您分享IOS开发的目标行动模式的使用。希望大家看完这篇文章后有所收获。我们一起讨论一下吧!
这种模式主要是为了减少模块之间的代码耦合,增强模块内代码之间的内聚性。
我们来看一个例子:
:假设有这样的要求:我们可以单击视图对象来更改视图的颜色。这对于初学者来说是一件非常容易的事情,只需在这个视图类中重写3360即可。
-(void) touches began3360 (nsset *)使用event 3360 (uievent *)事件函数进行触摸,然后更改视图的背景颜色,但此时出现了新的需求,有些人在点击视图时需要更改视图的颜色,有些人在点击视图时需要更改视图的位置。为了让不同的对象执行不同的事件,在实例化视图类对象时,有必要指定对象感兴趣的事件。对于这个需求,我们可以将枚举变量定义为对象的数据成员,并在初始化过程中指定枚举值(即指定感兴趣的事件)。同时,需要用event 3360 (uievent *)事件函数重写-(void)touch began 3360(nsset *)touch,使其可以针对不同的枚举值执行不同的功能。假设我们此时点击视图对象时需要执行翻转功能,那么我们必须再次修改视图中的具体实现功能。这样代码之间的耦合性比较大,移植起来比较不方便(试想这样的场景,假设别人的app需要你写的视图类,而别人不需要你视图类中的事件方法,需要修改视图类,难免会出现一些错误)。这个问题的解决方案是Target-Action模式,直接看代码3360。
//主视图头文件
#importUIKit/UIKit.h
@ interface mainviewcontroler : uiviewcontroler
@end//主视图实现
#导入“MainViewController.h”
#导入“MyView.h”
@实现维护视图控制器
-(id)init
{
self=[super nit];
如果(自我)
{
}
returnself
}
-(无效)视图加载
{
my view * view1=[[my viewalloc]initwithframe : cgrectcmake(10,20,100,100)和target : selfandaction : @ selector(changecolor :)];
[self . viewpaddsubview : view 1];
MyView * view 2=[[myviewlock]initwithframe : cgrectcmake(10,20,100,100)和target : selfandaction : @ selector(moveframe :)];
[self . viewpaddsubview : view 2];
}
-(void)changecolor :(ui view *)a查看
{
NSLog(@ ' buttonClick ');
int end=arc 4 random()% 5;
int green=arc 4 random()% 5;
int blue=arc 4 random()% 5;
aview . background color=[uicolorborwithdred : red/255.0 green : green/255.0 blue : blue/255.0 alpha :1.0];
}
-(void)moveframe :(ui view *)aView
{
aview . frame=cgrectMake(arc 4 random()20,arc4random()H0,100,100);
}
@end//测试视图类头文件
#importUIKit/UIKit.h
@interfaceMyView:UIView
{
id _ target
SEL _ action
}
-(id)initwithframe :(CGRect)frameand target :(id)target and action :(SEL)操作;
@property(assign,readwrite,非原子)iddeledate
@end////测试视图类实现
#导入“MyView.h”
@implementationMyView
-(id)initwithframe :(CGRect)frame和target :(id)targetandaction :(SEL)操作
{
self=[superinitwithframe : frame];
如果(自我)
{
_ target=target
_ action=action
}
self . background COlOr=[UIColorBlueCOlOr];
returnself
}
-(void)touchesbegann :(NSSet *)toucheswithevent :(ui event *)事件
{
[_ targetperformselector : _ actionwithobject : self];
}
@end看完这篇文章,相信大家对“IOS开发的Target-Action模式有什么用?”想了解更多,请关注行业资讯频道,感谢阅读!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157464.html