2014-07-26 28 views
1

我有這個void如何使用NSTimer傳遞兩個參數?

-(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作爲第一個參數。

如何傳遞這兩個參數?

+0

提示,如果您需要在userInfo中傳遞多個值,請使用NSDictionary來保存這些值。 –

回答

3

NSTimer documentation

aSelector

要發送的消息的定時器觸發時進行定位。 選擇器應具有以下簽名:timerFireMethod: (包括用於指示該方法接受參數的冒號)。該 定時器本身作爲傳遞參數,因此該方法將採用 以下模式:

- (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; 
} 
2

你不能按照你的方式去做。定時器的選擇器有零個或一個參數,如果它有一個,那麼它必須是定時器(該方法的簽名在NSTimer類的引用中清楚地說明了)。但是,您可以在userInfo參數中傳遞所需的任何對象。因此,請將您的圖像視圖作爲userInfo傳遞。