2012-05-29 48 views
0

我正在製作一個應用程序,它有一個「更新方法」的王,負責持續運行代碼。我想過使用NSTimer,因爲它有一個選項可以無限重複。我把它加載這樣:凡GameUpdate:聲明,像這樣NSTimer不被稱爲

gameTimer = [NSTimer timerWithTimeInterval:0.01428 target:self selector:@selector(GameUpdate:) userInfo:NULL repeats:true]; 

-(void)GameUpdate:(NSTimer*)timer; 

的事情是,裏面GameUpdate:代碼永遠不會運行。它曾經在xcode 4.2中工作。爲什麼是這樣?

+1

b.t.w.,一個風格建議:類方法名應該總是以小寫字母開頭(例如「'gameUpdate:'」)。類名應該以大寫字母開頭。 –

+0

好吧,恰好是我採取的一個壞習慣。 – rdelfin

回答

0

您需要將新創建的NSTimer對象添加到運行循環中。

lifted from the answer to this related question):作爲the docs說:結合

定時器工作,運行循環。要有效使用計時器,請注意運行循環的運行方式 - 請參見NSRunLoop和 「線程編程指南」。請特別注意,運行循環保留其定時器,因此您可以在將其添加到 運行循環後釋放定時器。

如果您查看相關問題的其他答案,您將看到如何創建一個NSTimer對象,並將其自動添加到運行循環中。

+1

謝謝。雖然沒有必要直接使用NSRunLoop,但我在鏈接中看到了您提供的問題的答案。它必須是一個預定的計時器而不是一個計時器。 – rdelfin