我在Objective-C,GLButton中制作了一个自定义按钮。我想遵循目标 - 动作设计模式。所以在GLButton我有
SEL _action;
NSObject *_target;
- (void) setAction:(SEL) action{
_action = action;
}
- (void) setTarget:(NSObject*) target{
_target = target;
}
并执行它调用的操作
[_target performSelector:_action];
在实例化GLButton的类中,我有方法
- (void) button1{
NSLog(@"button1");
}
- (void) button2{
NSLog(@"button2");
}
然后我设置了相应的目标/行动
[b1 setTarget:self];
[b1 setAction:@selector(button1)];
[b2 setTarget:self];
[b2 setAction:@selector(button2)];
但是当我点击任一按钮时,它总是触发最后一个目标集,在本例中为button2。
知道如何解决这个问题吗?
答案 0 :(得分:2)
这些实例变量是在.m文件中的随机位置声明的吗?
SEL _action;
NSObject *_target;
它们需要是实例变量,或者更好的是@property声明。