早期我们使用延时执行的方法都是用NSObject 类提供的,performSelector:系列的方法,具体有哪些我们看一下 我们一般让某个对象延时执行某个方法都会调用包含 afterDelay这个参数的方法,此参数即代表延时多长时间执行 ,但是这一系列的方法的参数都只接受继承 ...
.GCD有一个底层线程池,这个池中存放的是一个个的线程。之所以称为 池 ,很容易理解出这个 池 中的线程是可以重用的,当一段时间后这个线程没有被调用胡话,这个线程就会被销毁。注意:开多少条线程是由底层线程池决定的 线程建议控制再 条 ,池是系统自动来维护,不需要我们程序员来维护 看到这句话是不是很开心 而我们程序员需要关心的是什么呢 我们只关心的是向队列中添加任务,队列调度即可。 .如果队列中存 ...
2020-01-31 22:43 0 756 推荐指数:
早期我们使用延时执行的方法都是用NSObject 类提供的,performSelector:系列的方法,具体有哪些我们看一下 我们一般让某个对象延时执行某个方法都会调用包含 afterDelay这个参数的方法,此参数即代表延时多长时间执行 ,但是这一系列的方法的参数都只接受继承 ...
在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行。iOS开发中,有两种常用的方法可以实现延迟执行,一种是使用GCD,另外一种是使用NSRunLoop类中提供的方法。 1、使用GCD实现延迟执行 在GCD中可以使用dispatch_after()函数,封装一段代码 ...
1、异步函数和并行队列 注意:这些任务都是在创建完之后才执行。异步函数+并发队列,可以新建线程,各线程也是并发执行的。 2、同步函数+并发队列 注意:这些任务都是创建一个就立马执行,执行完才创建下一个,因为是同步函数,所以不新建线程,只要是同步函数,就不会 ...
dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{ // 并行执行的线程一 }); dispatch_group_async ...
只执行一次 (多用于单例模式) dispatch_once(dispatch_once_t *predicate, dispatch_block_t block); dispatch_once_t *predicate:一个全局的变量 dispatch_block_t block ...
一、欧几里得算法及其证明 1.定义: 欧几里得算法又称辗转相除法,用于求两数的最大公约数,计算公式为GCD(a,b)=GCD(b,a%b); 2.证明: 设x为两整数a,b(a>=b)的最大公约数,那么x|a,x|b; ①由整数除法具有传递性(若x能整除a,x能整除b,那么x可整除 ...
很早就学过欧几里得算法,但是一直不知道它的原理。几乎每本算法书都会提到它,但是貌似只有数学书上才会见到它的原理。。。 前段时间粗粗看了点数论(《什么是数学》),惊讶于这个原理的奇妙。现在把它通俗地写下来,以免自己忘记。 欧几里得算法是求两个数的最大公约数(Greatest Common ...
平常开发中会经常用gcd做一下多线程任务,但一直没有对同步、异步任务在串行、并行队列的执行情况做个全面的认识,今天写了个demo跑了下,还是有些新发现的。 代码如下: - (void)touchesBegan:(NSSet<UITouch *> *)touches ...