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

本文列举了四种延时执行某函数的方法及其一些区别。假如延时1秒时间执行下面的方法。

-(void)delayMethod { NSLog(@"execute"); }
1.performSelector方法

[self performSelector:@selector(delayMethod) withObject:nil
afterDelay:1.0f]; 此方式要求必须在主线程中执行,否则无效。 是一种非阻塞的执行方式, 暂时未找到取消执行的方法。

2.定时器:NSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self
selector:@selector(delayMethod) userInfo:nil repeats:NO];
此方式要求必须在主线程中执行,否则无效。 是一种非阻塞的执行方式, 可以通过NSTimer类的-
(void)invalidate;取消执行。

  1. sleep方式

[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];
此方式在主线程和子线程中均可执行。 是一种阻塞的执行方式,建方放到子线程中,以免卡住界面 没有找到取消执行的方法。

4.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 delayMethod]; });
此方式在可以在参数中选择执行的线程。 是一种非阻塞的执行方式, 没有找到取消执行的方法。


Eidesen_Blog_ios
专注iOS,Swift开发,后期还有一些个人开发遇到的问题及解决方案。我都会放到Blog上分享。欢迎小伙伴讨论...

专注iOS,Swift开发,总结了一下自己项目中遇到的问题,及解决方案。欢迎小伙伴讨论和多多指教--->记...

427 声望
16 粉丝
0 条评论
推荐阅读
ios7 UILabel sizeWithFont方法的最新写法
{代码...}

Eidesen阅读 2.3k

性能优化之使用vue-worker插件(基于Web Worker)开启多线程运算提高效率
什么是Web Worker15年前,也就是2008年,html第五版html5发布,这一版的发布,提供了不少新的好用的功能,如:Canvas绘图拖拽dragwebsocketGeolocationwebworker等...笔者之前说过:一项新技术新的技术方案的提出...

水冗水孚5阅读 482

封面图
iOSer 年度总结|晋升的逻辑是什么
2022年是疫情3年的一个“小尾巴”,但它一点也不小,因为它是3年内大家感受最深的一年,也是影响最大的一年。身边同事们换工作、周围见闻都可以印证这个结论。

杭城小刘6阅读 1.9k

封面图
这一次,解决Flutter Dialog的各种痛点!
4.0版本做了重大调整,迁移请参照: SmartDialog 3.x 迁移 4.0本文内容已更新,文中内容及其代码皆为4.0用法前言Q:你一生中闻过最臭的东西,是什么?A:我那早已腐烂的梦。兄弟萌!!!我又来了!这次,我能自信...

小呆呆6661阅读 3.5k

封面图
网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队2阅读 462

封面图
Flutter 让你的Dialog脱胎换骨吧!(Attach,Dialog,Loading,Toast)
4.0版本做了重大调整,迁移请参照: SmartDialog 3.x 迁移 4.0本文内容已更新,文中内容及其代码皆为4.0用法前言Q:你一生中闻过最臭的东西,是什么?A:我那早已腐烂的梦。兄弟萌!!!我又来了!这次,我能自信...

小呆呆6662阅读 2.4k

封面图
Mac下编译WebRTC(Mac和iOS版本)
随着新冠疫情的影响,这两年音视频的需求呈爆发式增长。在音视频领域中,WebRTC可以说是一个绕不开宝库,包括了音视频采集、编解码、传输、渲染的全过程。本文主要记录下在Mac平台上编译WebRTC Mac和iOS版本的全...

吴尼玛阅读 3.4k

专注iOS,Swift开发,总结了一下自己项目中遇到的问题,及解决方案。欢迎小伙伴讨论和多多指教--->记...

427 声望
16 粉丝
宣传栏