1

我正在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。

知道如何解决这个问题吗?

4

1 回答 1

2

这些实例变量是在您的 .m 文件中随机声明还是声明?

SEL _action;
NSObject *_target;

它们需要是实例变量,或者更好的是 @property 声明。

于 2012-10-01T03:07:02.547 回答