2013-03-16 111 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