开发中有时候会执行一些操作,但是不希望立刻执行,而是在一段时间后,或者特定的时间中去执行按方法,这个时候就需要我们做一些延时操作了,有人可能第一反映想到了定时器,不错,这也是其中的一种实现方法。
熟悉iOS开发的人应该都知道,iOS中为我们提供了至少三种延时操作的方法,两个跟多线程有关,一个跟定时器有关。以下是这三个方法:
1、[NSTimer scheduledTimerWithTimeInterval:7 target:self selector:@selector(showView) userInfo:nil repeats:NO];
这个就是通过定时器来做的,这种方式非常方便不用我们手动添加到runloop上,
NSTimer *myTimer= [NSTimer timerWithTimeInterval:7.0target:selfselector:@selector(timerFired:)userInfo:nilrepeats:NO];
[[NSRunLoop currentRunLoop]addTimer:myTimerforMode:NSDefaultRunLoopMode];
这种方式创建的定时器要添加到runloop上,否则是没有效果的,创建完后如果想要立即执行的可以调用 -(void)fire;方法,-(void)invalidate;方法可以停止定时器,将定时器从runLoop中移除。
2、[self performSelector:@selector(startGame) withObject:self afterDelay:5];这是第二种方法,
3、dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
});
以上是经常用到的延时方法。