2013-03-16 208 views
0

這裏是我的代碼:如何等待while循環?

float interval = 0.03; 

while (interval > 0.005) { 
    timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 
    NSLog(@"%f", interval); 
    interval = interval - 0.005; 
} 

我怎樣才能讓while循環每次循環後等待的時間具體數額?我一直在尋找像sleep或者performSelector這樣的東西:withObject:afterDelay但是他們既不工作也不知道如何使用它們......有些幫助嗎?

+0

'sleep'? 'usleep'? '[NSThread sleepForTimeInterval:]'?拿你的選擇。 – 2013-03-16 14:55:25

+2

@HinataHyuga究竟應該在那裏做什麼評論?我沒有看到它的相關性。 – 2013-03-16 14:56:04

+0

睡覺,睡覺,另一個不工作,因爲它暫停所有的應用程序,直到完成時間...我不希望發生這種情況,我想在減少間隔後等待5秒。 – 2013-03-16 15:00:03

回答

0

你可以使用一個遞歸結構:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 
    [self recursiveMethode:[NSNumber numberWithDouble:0.3]]; 

} 

-(void)onTimer 
{ 
    NSLog(@"timer"); 
} 


-(void)recursiveMethode:(NSNumber *)interval 
{ 
    timer = [NSTimer scheduledTimerWithTimeInterval:interval.doubleValue target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 
    NSLog(@"%f", interval.doubleValue); 
    double delay = 1; 
    [self performSelector:@selector(recursiveMethode:) withObject:[NSNumber numberWithDouble:interval.doubleValue - 0.05] afterDelay:delay]; 
} 
+2

該函數不是遞歸的,它是重複的。 – CodaFi 2013-03-16 19:02:11

+0

重複的功能是一個特殊的遞歸功能。 – HackingOtter 2013-03-16 20:55:58