2012-11-28 29 views
1

我想反覆調用函數foo,但nstimer沒有工作,你可以幫我嗎?爲什麼我的NSTimer不工作?

@implementation abc 
-(id)init 
{ 
    [NSTimer scheduledTimerWithTimeInterval:(1/16) target:self selector:@selector(foo) userInfo:nil repeats:YES]; 
} 

這是我的主要

int main(int argc, char *argv[]) 
{ 
    abc *ab=[[abc alloc]init]; 



    [NSThread sleepForTimeInterval:100]; 


    [ab release]; 

    return 0; 
} 
+0

我對線程不是很熟悉,但看看它的文檔看起來像這樣[NSThread sleepForTimeInterval:100];阻止主運行循環中運行的所有內容。你有沒有試過評論或等待時間間隔完成?這條線的目的是什麼? – Dcritelli

回答

6

它不工作,因爲[NSTimer scheduledTimerWithTimeInterval:...]reference)狀態:

創建並返回一個新的NSTimer對象並在默認模式下在 當前運行循環中安排它。

...和你沒有運行循環

例如,你可以創建一個NSApplication(即一個合適的Cocoa應用程序)的實例以使其工作(你可以在不創建Cocoa應用程序的情況下創建自己的運行循環,但這將是相當數量的工作的)。

-1

試試這行代碼(1.0/16,而不是1/16):

[NSTimer scheduledTimerWithTimeInterval:(1.0/16) target:self selector:@selector(foo) userInfo:nil repeats:YES]; 
+0

仍然不工作 – zzzzz

+0

爲1/16 = 0和1.0/16 = 0.0625。這就是爲什麼你的計時器不工作。請記住:爲了以浮點形式獲得答案,至少應有一個值處於浮動狀態。 – Siddiq

+0

查看trojanfoe的答案,由於沒有運行循環,這將不起作用。 – WDUK