我正在尝试在自定义类中实现Target-Action Design Pattern。界面将具有以下方法:
- (void)addTarget:(id)target action:(SEL)action forEvents:(MyEvents)events;
MyEvents是一个NSUInteger。在我班上存储这些信息的最佳方法是什么?打开文件UIControl.h我注意到UIKit包含以下内容:
NSMutableArray* _targetActions;
我认为所有操作都添加在封装在NSObject中的这个数组中(我是否需要创建另一个自定义对象或者我可以重用哪些东西?)并且每次需要执行操作时它都会使用位掩码作为过滤器。这是对的吗?
提前致谢。
答案 0 :(得分:6)
该数组包含名为UIControlTargetAction
的私有类的实例。它只是一个POD类,它有三个实例变量:
id _target;
SEL _action;
int _eventMask;
您可以非常轻松地创建自己的版本。然后,当你有一个事件时,你只需要做一些事情:
for (MyTargetAction *targetAction in targetActions) {
if (targetAction.eventMask & myEventMask) {
[targetAction.target performSelector:targetAction.action];
}
}