如何使用NSTimer传递两个参数?

时间:2014-07-26 21:20:00

标签: ios objective-c nstimer

我有void

-(void)MoveMissile:(UIImageView *)Missile mtimer:(NSTimer *)MissileTimer{
    // lines of code here
}

和这个NSTimer:

[NSTimer scheduledTimerWithTimeInterval:0.025 target:self selector:@selector(MoveMissile:mtimer:) userInfo:nil repeats:YES];

我希望将NSTimer作为第二个参数传递,将UIImageView称为Missile1作为第一个参数。

如何传递这两个参数?

2 个答案:

答案 0 :(得分:3)

来自NSTimer documentation

  

aSelector

     

计时器触发时发送到目标的消息。该   selector应具有以下签名:timerFireMethod:   (包括冒号以指示该方法接受参数)。该   timer将自身作为参数传递,因此该方法将采用   以下模式:

- (void)timerFireMethod:(NSTimer *)timer

因此,您必须使用一个接受单个参数的方法,并通过定时器userInfo将引用传递给图像视图,就像这样。

[NSTimer scheduledTimerWithTimeInterval:0.025
                                 target:self
                               selector:@selector(missileTimerMethod:)
                               userInfo:anImageViewReference
                                repeats:YES];


- (void)missileTimerMethod:(NSTimer *)missileTimer
{
    UIImageView *theImageView = (UIImageView *)missileTimer.userInfo;
}

答案 1 :(得分:2)

你无法按照自己的方式去做。计时器的选择器具有零个或一个参数,如果有一个,则必须是计时器(该方法的签名在NSTimer类引用中明确说明)。但是,您可以在userInfo参数中传递所需的任何对象。因此,将您的图像视图作为userInfo传递。