文档章节

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

木木情深
 木木情深
发布于 2014/02/28 09:28
字数 241
阅读 1344
收藏 0
  1.  performSelector方法

    执行方法:

    [self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>];

    取消执行方法:

    [ NSObject cancelPreviousPerformRequestsWithTarget:<#(id)#> selector:<#(SEL)#> object:<#(id)#> ];//这里的方法是 NSObject的静态方法

    特点:此方式要求必须在主线程中执行,否则无效。是一种非阻塞的执行方式。

2.  NSTimer

      执行方法:

   NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:<#(NSTimeInterval)#> target:<#(id)#> selector:<#(SEL)#> userInfo:<#(id)#> repeats:<#(BOOL)#>];

   取消方法:

    [timer invalidate];//这里的是减方法

   特点:此方式要求必须在主线程中执行,否则无效。是一种非阻塞的执行方式。

3. NSThread

    执行方法: 

    NSThread *thread = [[NSThread alloc]initWithTarget:<#(id)#> selector:<#(SEL)#> object:<#(id)#>];

   [NSThread sleepForTimeInterval:<#(NSTimeInterval)#>];

   [thread start];

   特点:此方式在主线程和子线程中均可执行。是一种阻塞的执行方式,建议放到子线程中。

4. dispatch_after 

double delayInSeconds = 2.0;

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

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

       // <#code to be executed on the main queue after delay#>

    }) ];//敲击dispatch_after  代码会自动生成

  

   




© 著作权归作者所有

共有 人打赏支持
木木情深
粉丝 37
博文 189
码字总数 26451
作品 0
广州
程序员
私信 提问
IOS中延时执行的几种方式的比较和汇总

IOS中延时执行的几种方式的比较和汇总 本文列举了四种延时执行某函数的方法及其一些区别。假如延时1秒时间执行下面的方法。 - (void)delayMethod { NSLog(@"execute"); } 1.performSelector...

hanbing94
2015/07/25
0
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
第一部分:如何在iOS和Android上选择一个JavaScript 引擎进行应用开发

在我开始使用OpenAphid-Engine的时候,已经有几种类似的iOS/Android 项目.这些商业项目或者开源项目使用JavaScript实现代码特性。比如,Titanium 和PhoneGap 允许开发者使用JavaScript开发本...

打杂程序猿
2013/02/01
8.7K
2
2019年,iOS 面试题持续更新(附答案)

这个栏目将持续更新--请iOS的小伙伴关注! 1、多线程的应用 2、GCD实现多个请求都完成之后返回结果 3、A、B两个int数组,得到A数组中B数组不包含的元素 4、事件传递链,页面上一个按钮,按钮和...

猿_员
01/26
0
0
CloudBox说明

1. 下载连结,下载后解压缩可直接开启 http://blog.csdn.net/cloudhsu/article/details/7443266 2. 此为xcode3模版, xcode可直接开启执行, xcode3与xcode4皆可直接执行 3. 若要使用此模版, 请...

长平狐
2012/10/08
77
0

没有更多内容

加载失败,请刷新页面

加载更多

开源 java CMS - FreeCMS2.8 自定义标签 sitePath

项目地址:http://www.freeteam.cn/ sitePath 从FreeCMS 2.4开始支持 按上下级顺序提取指定站点的所属站点。 参数 说明 id 站点id sourcepath 站点源文件目录名 返回值 说明 site 站点对象,...

freeteam
21分钟前
0
0
2019 年最好的 7 款虚拟私人网络服务

糟糕的数据安全会带来极大的代价,特别是对企业而言。它会大致大规模的破坏并影响你的品牌声誉。尽管有些企业可以艰难地收拾残局,但仍有一些企业无法从事故中完全恢复。不过现在,你很幸运地...

linuxCool
52分钟前
5
0
OSChina 周一乱弹 —— 加油,还有11个小时就下班了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @_全村的希望 :吴亦凡把大碗面正儿八经做成单曲了,你别说,还挺好听 《大碗宽面》- 吴亦凡 手机党少年们想听歌,请使劲儿戳(这里) @tom_t...

小小编辑
今天
482
15
C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
7
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部