0

可能重复:
@selector 中的参数

如何向选择器调用具有超过 2 个参数的参数化方法,例如对于 EX,我有这样的方法

-(void)GetTheData:(NSString *)str1 :(NSString *)str2

现在我需要在@selector 内的以下计时器中调用此方法。我该如何调用?

NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(**HowCanICallHere**) userInfo:nil repeats:YES];
4

4 回答 4

2

NSDictionary作为参数传递给目标方法

 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"parameter1",@"2",@"parameter2", nil];

        [ NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(myFunction:) userInfo: dictionary repeats:NO];

进一步检索目标函数中的参数

-(void)myFunction:(NSTimer *)timer{
    NSLog(@" dict : %@",timer.userInfo);
}

这样你就可以通过添加更多的 keyValue 对来传递多个参数NSDictionary

于 2012-12-04T13:07:49.923 回答
2

我不确定你能不能。出于同样的原因,我们提供了“userInfo”选项,以传递多个参数。您可以通过创建一个包含两个对象的字典来轻松实现它:

NSDictionary *dict = [NSDictionary dictionaryWithObjects:objArray andKeys:keyArray];

并将该字典作为 userInfo 对象传递给方法:

NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(urTimerMethod:) userInfo:dict repeats:YES];

将方法定义为:

- (void)urTimerMethod:(NSTimer *)timer {
        NSDictionary *dict = [timer userInfo];
}
于 2012-12-04T13:13:06.293 回答
0

You can use this:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(GetTheData::) userInfo:nil repeats:YES];

于 2012-12-04T12:46:43.187 回答
0

我知道如何将它与执行选择器一起使用,所以也许您可以通过以下方式进行操作:

-(void)GetTheData1:(NSString *)str1 GetTheData2:(NSString *)str2

NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(mymethod) userInfo:nil repeats:YES];

- (void) mymethod {
[self performSelector:@selector(GetTheData1:GetTheData2:) withObject:str1 withObject:str2];

}
于 2012-12-04T13:13:00.800 回答