首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Objective-C中实现目标-动作设计模式

在Objective-C中实现目标-动作设计模式
EN

Stack Overflow用户
提问于 2011-05-11 00:10:28
回答 1查看 1.6K关注 0票数 7

我正在尝试在一个自定义类中实现Target-Action设计模式。该接口将具有以下方法:

代码语言:javascript
复制
- (void)addTarget:(id)target action:(SEL)action forEvents:(MyEvents)events;

MyEvents是一个NSUInteger。在我的类中存储这些信息的最佳方式是什么?打开UIControl.h文件,我注意到UIKit包含以下内容:

代码语言:javascript
复制
NSMutableArray* _targetActions;

我假设所有操作都被添加到这个封装在NSObject中的数组中(我是否需要创建另一个自定义对象,或者是否有可以重用的东西?)每次需要执行某个操作时,它都会使用位掩码作为过滤器来迭代数组。这是正确的吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-11 01:06:40

该数组包含一个名为UIControlTargetAction的私有类的实例。它只是一个有三个实例变量的POD类:

代码语言:javascript
复制
id _target;
SEL _action;
int _eventMask;

你可以很容易地创建你自己的版本。然后,当你有一个事件时,你只需要这样做:

代码语言:javascript
复制
for (MyTargetAction *targetAction in targetActions) {
    if (targetAction.eventMask & myEventMask) {
        [targetAction.target performSelector:targetAction.action];
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5953053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档