iOS 四种延时的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 四种延时的方法相关的知识,希望对你有一定的参考价值。

- (void)initBlock{
    //延时的方法
    //1:GCD延时 此方式在能够在參数中选择运行的线程。

是一种非堵塞的运行方式,没有找到取消运行的方法。
    double delay1=2.0;//设置延时时间
    dispatch_time_t popTime=dispatch_time(DISPATCH_TIME_NOW, delay1 * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^{
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"" message:@"GCD延时" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
        [alert show];
    });
    //2:NSTimer延时,此方式要求必须在主线程中运行。否则无效。是一种非堵塞的运行方式,能够通过NSTimer类的- (void)invalidate;取消运行。
    [NSTimer scheduledTimerWithTimeInterval:8.0f target:self selector:@selector(delayMethod2) userInfo:nil repeats:NO];
    //3:PerformSelector延时
    [self performSelector:@selector(delayMethod) withObject:nil afterDelay:5.0f];
    //4:NSThread 延时
    [NSThread sleepForTimeInterval:11.0f];
    [self delayMethod3];
}
- (void)delayMethod{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"" message:@"PerformSelector延时" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
    [alert show];
}
- (void)delayMethod2{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"" message:@"NSTimer延时" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
    [alert show];
}
- (void)delayMethod3{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"" message:@"NSThread延时" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
    [alert show];
}

以上是关于iOS 四种延时的方法的主要内容,如果未能解决你的问题,请参考以下文章

iOS中延时执行的几种方式的比较和汇总

延时执行

转iOS-延迟操作方法总结

iOS之延时执行(睡眠)的几种方法

iOS常见的几种延时执行的方法

Unity延时执行的n种方法