多用GCD,少用performSelect系列方法

例如,要延后执行某项任务,可以有下面两种实现方式,而我们应该优先考虑第二种:

// Using performSelect: withObject: afterDelay:

[self performSelector: @selector(dosomething)

    withObject:nil

   waitUntilDone:NO];

// Using dispatch_after

dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW,(int64_t)(5.0 * NSEC_PER_SEC));

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

    [self dosomething];  

  });

想把任务放在主线程中执行,也可以有下面两种方式,而我们还是应该优先选后者:

// Using performSelectOnMainThread: withObject: waitUntilDone:

[self performSelectOnMainThread:@selector:(dosomething) withObject:nil waitUntilDone:NO];

//Using dispatch_async

//(or if waitUntilDone is YES, then dispatch_sync)

dispatch_async (dispatch_get_main_queue(),^{

  [self doSomething];

  });

时间: 2024-10-11 15:10:20

多用GCD,少用performSelect系列方法的相关文章

挖一挖C#中那些我们不常用的东西之系列(2)——IsXXX 系列方法

原文:挖一挖C#中那些我们不常用的东西之系列(2)--IsXXX 系列方法 不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年我刚毕业的时候也做过四个月的外包,那种日子简直 不是人过的,就连大楼下面买珠宝的阿姨都说,这些孩子,只看过他们上班,就没见过他们下班,不过有一点好,有个QA的小姑娘天天下午6 点教我们倭瓜语,现在还在勾搭中...   好了,现在我们看看需求. 一: 如何判断“a”是不是数字类型. ①:在C#中我们可能会用TryParse来判断当前的”a“是否

ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现

上篇博客我们聊完SignalProducer结构体的基本实现后,我们接下来就聊一下SignalProducerProtocol延展中的start和lift系列方法.SignalProducer结构体的方法扩展与Signal的扩展相同,都是面向协议的扩展.首先创建了一个SignalProducerProtocol协议,使SignalProducer在延展中遵循SignalProducerProtocol协议.然后我们再对SignalProducerProtocol进行扩展.这样一来,SignalP

[label][JavaSript]querySelectorAll 方法相比 getElementsBy 系列方法有什么区别?

 轉載出處: http://www.zhihu.com/question/24702250 querySelectorAll 相比下面这些方法有什么区别? getElementsByTagName getElementsByClassName getElementsByName 1. W3C 标准querySelectorAll 属于 W3C 中的 Selectors API 规范 [1].而 getElementsBy 系列则属于 W3C 的 DOM 规范 [2]. 2. 浏览器兼容query

querySelectorAll 方法相比 getElementsBy 系列方法有什么区别? ---转载自知乎

1. W3C 标准querySelectorAll 属于 W3C 中的 Selectors API 规范 [1].而 getElementsBy 系列则属于 W3C 的 DOM 规范 [2]. 2. 浏览器兼容querySelectorAll 已被 IE 8+.FF 3.5+.Safari 3.1+.Chrome 和 Opera 10+ 良好支持 .getElementsBy 系列,以最迟添加到规范中的 getElementsByClassName 为例,IE 9+.FF 3 +.Safari

多用as少用强制类型转换

在 C# 中存在一个名叫静态类型检查的机制,这个机制可以让编译器帮助我们把类型不服的用法找出来,从而使得应用程序在运行期间加少一些类型检查的操作.但是有时候我们还是需要进行运行期类型检查,比如我们在设计框架时将方法的参数类型定义为 object ,那么这时我们就有很大的可能需要将 object 类型的参数先转换为其他类型.我们进行转换时会有两种方法可以使用:一种是强制类型转换,这种方法可以绕过编译器的类型检查,另一种是先通过 is 判断操作是否合理,是否可以转换,然后再使用 as 运算符进行转换

记录javascript insertAdjacet系列方法

添加元素原来还有insertAdjacent这种方法.insertAdjacentHTML(sWhere,html),insertAdjacentText(sWhere,text),insertAdjacentElement(sWhere,element) 这是ie弄出来的 所以ie基本支持, chrome(47.0.2526.106 m) 对三个方法都支持 测试ff(40.0.3)不支持 insertAdjacentElement方法 sWhere的取值有beforeBegin,beforeE

JQuery中html、append、appendTo、after、insertAfter系列方法

html方法,给元素添加html代码或者清空html代码(参数为空字符串): append向元素的末尾添加html代码: appendTo这个方法跟append方法的很像,只是要添加的html代码的目标有所不一样: after向元素的后边添加html代码,如果元素后面有元素了,那将后面的元素后移,然后将html代码插入: before向元素的前边添加html代码,如果元素前面有元素了,那将前面的元素前移,然后将html代码插入: insertAfter将JQuery封装好的元素插入到指定元素的后

优化Join运算的系列方法(1)

转载自http://c.raqsoft.com.cn/article/1535868803095?r=niu JOIN是关系数据库中常用运算,用于把多个表进行关联,关联条件一般是判断某个关联字段的值是否相等.随着关联表的增多或者关联条件越来越复杂,无论理解查询含义.实现查询语句,还是在查询的性能方面,可以说JOIN都是最具挑战的SQL运算,没有之一. 特别是JOIN的性能,一直是个老大难问题.下面我们将基于数据计算中间件(DCM)--集算器,来提供一些提升运算性能的方法. 当然,我们不是介绍如何

[编写高质量iOS代码的52个有效方法](十)Grand Central Dispatch(GCD)

[编写高质量iOS代码的52个有效方法](十)Grand Central Dispatch(GCD) 参考书籍:<Effective Objective-C 2.0> [英] Matt Galloway 先睹为快 41.多用派发队列,少用同步锁 42.多用GCD,少用performSelector系列方法 43.掌握GCD及操作队列的使用时机 44.通过Dispatch Group机制,根据系统资源状况来执行任务 45.使用dispatch_once来执行只需要运行一次的线程安全代码 46.不