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

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

- (void)delayMethod { NSLog(@"execute"); }

1.performSelector方法

[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];

此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。

2.定时器:NSTimer

[NSTimer scheduledTimerWithTimeIn<wbr>terval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];</wbr>

此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行。

3. sleep方式

[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];

此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建方放到子线程中,以免卡住界面
没有找到取消执行的方法。

4.GCD方式

double delayInSeconds = 1.0; <wbr></wbr>
 <wbr>__block ViewController* bself = self; <wbr></wbr></wbr>
 <wbr>dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));</wbr>
<span style="word-wrap: normal; word-break: normal;">dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ <wbr></wbr></span>
 <wbr>[bself delayMethod]; });</wbr>

此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。

时间: 2024-10-26 05:17:42

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

iOS中播放gif动态图的方式探讨

iOS中播放gif动态图的方式探讨 一.引言     在iOS开发中,UIImageView类专门来负责图片数据的渲染,并且UIImageView也有帧动画的方法来播放一组图片,但是对于gif类型的数据,UIImageView中并没有现成的接口提供给开发者使用,在iOS中一般可以通过两种方式来播放gif动态图,一种方式是通过ImageIO框架中的方法将gif文件中的数据进行解析,再使用coreAnimation核心动画来播放gif动画,另一种方式计较简单,可以直接通过webView来渲染gif图

mybatis中批量插入的两种方式(高效插入)_java

MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 一.mybiats foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主

JS中检测数据类型的几种方式及优缺点小结_javascript技巧

1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string"."boolean"."undefined"."object"."function" 局限性: 1)typeof null ->"object" 2)检测的不管是数组还是正则都返回的是"ob

CSS实现的网页中文字排版的几种方式

CSS实现的网页中文字排版的几种方式!如果用得上可以直接用现成的了! 1.文字倒排(逆时针转90度)<br><br><span style="font-family:@宋体;color:red">尽人事 顺天命</span><br><br>2.文字正写竖排,中文竖排,从右往左读<br><br><div style="layout-flow: vertical-ideograp

WPF中实现PropertyGrid的三种方式

由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章 介绍在WPF中实现PropertyGrid的三种方式,三种方式都是俺平时使用时总结出 来的. 第一种方式:使用WindowsForm的PropertyGrid控件. 用过WPF的童鞋都晓得,可以通过WindowsFormsHost将WindowsForm的控件宿 主到WPF中使用.很简单,分为简单的3步. 第一步:引用dll:在WPF应用程序中引入System.Windows.Forms.dll. 第二步:引用命

Jquery 在页面加载后执行的几种方式

 这篇文章主要介绍了Jquery 在页面加载后执行的几种方式,需要的朋友可以参考下 方式1:   代码如下: $(function(){    initPublish();    });    说明: initPublish() 即为你要运行的JS函数:这段代码,放在页面最低端.    方式2:  代码如下: $(document).ready(function () {    // add your code here    initPublish();    $(.a).click( fun

详析Spring中依赖注入的三种方式_java

前言 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. 在Sprin

ASP.NET Razor模板引擎中输出Html的两种方式_实用技巧

本文实例讲述了ASP.NET Razor模板引擎中输出Html的两种方式.分享给大家供大家参考,具体如下: Razor中所有的Html都会自动编码,这样就不需要我们手动去编码了(安全),但在需要输出Html时就是已经转义过的Html文本了,如下所示: @{ string thisTest = "<span style=\"color:#f00;\">qubernet</span>"; } @thisTest; 这样在页面输出的文本就是:<

IOS给图片添加水印(两种方式)_IOS

为了防止自己辛苦做的项目被别人盗走,采取图片添加水印,在此表示图片的独一无二.加水印不是在上面添加几个Label,而是我们把字画到图片上成为一个整体,下面小编给大家分享IOS给图片添加水印(两种方式). 提供一个方法,此方法只需要传递一个要加水印的图片和水印的内容就达到效果. 第一种方式: -(UIImage *)watermarkImage:(UIImage *)img withName:(NSString *)name { NSString* mark = name; int w = img