iOS开发探索-延时操作浅谈

在实际开发中,有时会需要用到延时操作,即操作任务间隔一段时间后执行,以下提供四种方案可供参考:

方法一:
- (void)delay1{
// 延迟执行少用sleep,坏处:卡住当前线程
[NSThread sleepForTimeInterval:3];
NSLog(@"操作");
}
方法二:
- (void)delay2{
//1:GCD延时 此方式在可以在参数中选择执行的线程。是一种非阻塞的执行方式,没有找到取消执行的方法。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"------task------%@", [NSThread currentThread]);
});
方法三:
- (void)delay3{
// 一旦定制好延迟任务后,不会卡主当前线程
[self performSelector:@selector(download:) withObject:nil afterDelay:3];
}
方法四:

- (void)delay4{ 
   //NSTimer延时,此方式要求必须在主线程中执行,否则无效。是一种非阻塞的执行方式,可以通过NSTimer类的- (void)invalidate;取消执行。
   [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(delayMethod2) userInfo:nil repeats:NO];
}
在此感谢各位读者的来访,您的关注是我写作分享的最大动力。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容