【问题标题】:Implementing the Target-Action Design Pattern in Objective-C在 Objective-C 中实现目标-动作设计模式
【发布时间】:2011-05-10 16:10:28
【问题描述】:

我正在尝试在自定义类中实现目标动作设计模式。该接口将具有以下方法:

- (void)addTarget:(id)target action:(SEL)action forEvents:(MyEvents)events;

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

NSMutableArray* _targetActions;

我想所有的动作都被添加到这个封装在一个 NSObject 中的数组中(我需要创建另一个自定义对象还是我可以重用的东西?)并且每次它需要执行一个动作时,它都会使用位掩码作为过滤器。对吗?

提前致谢。

【问题讨论】:

    标签: objective-c uikit


    【解决方案1】:

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

    id _target;
    SEL _action;
    int _eventMask;
    

    您可以很容易地创建自己的版本。然后,当您有活动时,您只需执行以下操作:

    for (MyTargetAction *targetAction in targetActions) {
        if (targetAction.eventMask & myEventMask) {
            [targetAction.target performSelector:targetAction.action];
        }
    }
    

    【讨论】:

    • 非常感谢!我就是这么想的。
    • 如果对任何人都有帮助,必须查找 POD 代表“普通旧数据”。
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多