第一种
[self performSelector:@selector(task) withObject:nil afterDelay:2.0];
-(void)task{
}
- Delay:需要延迟的时间
第二种
定时器
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(task) userInfo:nil repeats:YES];
- 第一个参数:延迟的时间
- 最后一个参数:YES:持续调用
NO:只调用一次
这个方法创建的定时器,我们不需要将定时器添加到RunLoop中,内部自动添加到runloop中,并且设置运行模式为默认
多用这种创建方式
第三种(列害)
GCD
- 第一个参数:DISPATCH_TIME_NOW 从现在开始计算时间
- 第二个参数:<#delayInSeconds#> 延迟的时间 GCD时间单位:纳秒(* 代表乘)
- 第三个参数:dispatch_get_main_queue() 队列(如果传的是并发队列,那么就可以在子线程中调用代码块)
- 大括号里面是延迟执行的代码块
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
<#code to be executed after a specified delay#>
});