选择器Objective-C设置

时间:2012-10-01 02:58:59

标签: objective-c ios selector

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

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

1 个答案:

答案 0 :(得分:2)

这些实例变量是在.m文件中的随机位置声明的吗?

SEL _action;
NSObject *_target;

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