2011-03-19 42 views
0

我在我的應用程序有這樣的方法:遞增的NSTimer

- (void)initializeTimer{ 
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval target:self 
           selector:@selector(move:) userInfo:nil repeats:YES]; 
} 

我發現,如果我改變的時間間隔計時器仍與舊值。

回答

3

創建計時器後,您無法更改間隔。查看Apple網站上的NSTimer文檔。您必須無效並釋放定時器,然後使用新時間間隔創建一個新定時器。

3

我注意到,如果我更改計時器的時間間隔仍然與舊值。

這是因爲在C中調用函數並在Objective-C中發送消息是按值傳遞,而不是按名稱傳遞。你不通過你的theInterval變量;你傳遞當時在那個變量中的值。該方法只接收值;它不知道你可能從哪裏通過它。在theInterval變量或任何其他存儲器中放入不同的值對定時器沒有影響,因爲定時器不知道或關心該變量或其他任何其他位置。

要改變計時器的間隔,唯一的方法是發送一個setTimeInterval:消息,正如Marc W在他的回答中所說的,當文檔將備份時,NSTimer對象不會響應這樣的消息。因此,沒有辦法改變現有定時器的間隔。