ios中设置延迟执行操作

第一种方法:performSelector方法

此方式要求必须在主线程中执行,否则无效。

是一种非阻塞的执行方式,

暂时未找到取消执行的方法。

[self performSelector:@selector(test) withObject:nil afterDelay:5.0f];

第二种方法:定时器:NSTimer

此方式要求必须在主线程中执行,否则无效。

是一种非阻塞的执行方式,

可以通过NSTimer类的- (void)invalidate;取消执行。

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(test) userInfo:nil repeats:NO];

第三种方法:sleep方式

此方式在主线程和子线程中均可执行。

是一种阻塞的执行方式,建方放到子线程中,以免卡住界面

没有找到取消执行的方法。

[NSThread sleepForTimeInterval:1.0f];

[self test];

第四种方法:GCD方式

此方式在可以在参数中选择执行的线程。

是一种非阻塞的执行方式,

没有找到取消执行的方法。

double delayInSeconds = 1.0;

__block ViewController* bself = self;

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));

dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

     [bself test];

});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 这篇文章中,我不会说多线程是什么、线程和进程的区别、多线程有什么用,当然我也不会说什么是串行、什么是并行等问...
    hashakey阅读 310评论 0 0
  • 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案...
    伯恩的遗产阅读 274,801评论 251 2,331
  • 首先明确线程和进程的关系和区别: 一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多...
    kkj1996阅读 212评论 0 0
  • pthread NSThread GCD1. 同步、异步、并发、串行讲解2. 创建队列的几种方式3. 栅栏函数4...
    Mark_Guan阅读 1,243评论 0 8
  • 我出生于1987年,到今年刚好三十周岁。恍若一念之间,我已然闯入而立之年,还没来得及为逝去的青春撰写墓志铭,又得去...
    宝木非衣阅读 469评论 0 2