需要objective-c暂停/等待功能

时间:2010-07-15 21:40:40

标签: objective-c

我需要在我的iPhone objective-c应用程序中添加暂停/等待功能。函数sleep()对我不起作用。

需要在这两者之间添加暂停/等待功能。

myscore += [self getcard];

myscore += [self getcard];

4 个答案:

答案 0 :(得分:3)

我没有看到Objective-c的这样一个函数,但是我使用了一个NSTimer,它在你决定的时间间隔内调用给定的函数。

http://developer.apple.com/iphone/library/documentation/cocoa/reference/foundation/Classes/NSTimer_Class/Reference/NSTimer.html

更具体地说,使用函数scheduledTimerWithTimeInterval:target:selector:userInfo:重复:为我做。时间间隔是以秒为单位,每次滴答之间的“睡眠”时间,目标是持有应该调用的函数的类,选择函数。

scheduledTimerWithTimeInterval:1          // Ticks once per second
                        target:myObject   // Contains the function you want to call
                      selector:@selector(myFunction:) 
                      userInfo:nil
                       repeats:YES

答案 1 :(得分:3)

这会在暂停当前方法的同时运行[NSRunLoop currentRunLoop] 2秒钟,让您同时处理输入和其他内容:

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];

答案 2 :(得分:1)

如果将代码分开等待后发生的事情,可以使用performSelector:withObject:afterDelay:在延迟后调用该选择器。

示例,5秒后退出应用程序:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:5.0];

答案 3 :(得分:0)

您可以使用GCD(大中心调度)中的dispatch_after方法,如此

myscore += [self getcard];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    myscore += [self get card];
});