草庐IT

DISPATCH

全部标签

iOS 网络请求顺序处理(信号量,group)

一、日常开发中,会经常遇到这样的需求:网络请求A返回成功后,调用网络请求B,网络请求B结果返回成功后调用网络请求C(即:A—>B—>C)。循环调用网络请求A,确保每次请求返回成功后继续调用网络请求A(即:A—>A—>A)。网络请求A和B返回成功后,调用网路请求C(即:A&B—>C)。二、以上三种需求,分别在此列举下示例:在GCD中跟信号量有关的三个函数如下:://创建时,值为0执行dispatch_semaphore_wait(sema,DISPATCH_TIME_FOREVER);A—>B—>C:信号量处理-(void)viewDidLoad{NSLog(@"开始====%@",@"A");

iOS DispatchSourceTimer 定时器

1.概述说起计时器,很多开发人员第一时间就会想起Timer,但是随着使用的深入,慢慢就发现Timer其实不是很好用,比如说TableView滑动时候不执行,Timer循环引用。2.DispatchSourceTimerDispatchSourceTimer,也就是大家通常叫的GCDTimer,是依赖于GCD的一种Timer,Runloop的底层代码中也用到这种Timer,可见GCDTimer并不依赖与Runloop。先看一下苹果的定义:Adispatchsourcethatsubmitstheeventhandlerblockbasedonatimer.2.1GCDTimer创建使用下面的方法

简单记录下理解的iOS知识点

一.在查看优化经验文章的时候,经常会看到关于+load和initialize两个方法,其中+load方法,是只要程序启动了,程序就会将所有代码加载到内存的代码区,此时,这个+load方法就会执行,同时,此方法会在main函数执行前就调用,而initialize是该类初始化时候才调用。所以推荐在做启动优化的时候,要检查系统中的无用类、过期类,合并多余类、中间类,因为每次启动app,这些都会加载一遍。二.启动时间大体可分为两步(冷启动热启动就算了,不区分了):第一步:main函数加载之前,系统会加载动态库、引入类的+load方法等,所以需要:删减不必要的动态库,定期检查系统中无用类,过期类,合并多

iOS 网络请求顺序处理(信号量,group)

一、日常开发中,会经常遇到这样的需求:网络请求A返回成功后,调用网络请求B,网络请求B结果返回成功后调用网络请求C(即:A—>B—>C)。循环调用网络请求A,确保每次请求返回成功后继续调用网络请求A(即:A—>A—>A)。网络请求A和B返回成功后,调用网路请求C(即:A&B—>C)。二、以上三种需求,分别在此列举下示例:在GCD中跟信号量有关的三个函数如下:://创建时,值为0执行dispatch_semaphore_wait(sema,DISPATCH_TIME_FOREVER);A—>B—>C:信号量处理-(void)viewDidLoad{NSLog(@"开始====%@",@"A");

iOS 同一个页面,多个网络请求如何处理

首先需要定义一个group:@property(nonatomic,strong)dispatch_group_tgroup;其次所有的网络请求放在一个方法中方便查看(void)dispatch_group_network{//请求多个网络请求,并监听所有网络请求都结束.//创建一个组self.group=dispatch_group_create();dispatch_queue_tserialQueue=dispatch_queue_create("com.benben.zhixun",DISPATCH_QUEUE_SERIAL);//网络请求1{//进入组dispatch_group_e

iOS 同一个页面,多个网络请求如何处理

首先需要定义一个group:@property(nonatomic,strong)dispatch_group_tgroup;其次所有的网络请求放在一个方法中方便查看(void)dispatch_group_network{//请求多个网络请求,并监听所有网络请求都结束.//创建一个组self.group=dispatch_group_create();dispatch_queue_tserialQueue=dispatch_queue_create("com.benben.zhixun",DISPATCH_QUEUE_SERIAL);//网络请求1{//进入组dispatch_group_e

ios利用RunLoop的原理去监控卡顿

一、卡顿问题的几种原因复杂UI、图文混排的绘制量过大;在主线程上做网络同步请求;在主线程做大量的IO操作;运算量过大,CPU持续高占用;死锁和主子线程抢锁。二、监测卡顿的思路监测FPS:FPS是一秒显示的帧数,也就是一秒内画面变化数量。如果按照动画片来说,动画片的FPS就是24,是达不到60满帧的。也就是说,对于动画片来说,24帧时虽然没有60帧时流畅,但也已经是连贯的了,所以并不能说24帧时就算是卡住了。由此可见,简单地通过监视FPS是很难确定是否会出现卡顿问题了,所以我就果断弃了通过监视FPS来监控卡顿的方案。RunLoop:通过监控RunLoop的状态来判断是否会出现卡顿。RunLoop

ios利用RunLoop的原理去监控卡顿

一、卡顿问题的几种原因复杂UI、图文混排的绘制量过大;在主线程上做网络同步请求;在主线程做大量的IO操作;运算量过大,CPU持续高占用;死锁和主子线程抢锁。二、监测卡顿的思路监测FPS:FPS是一秒显示的帧数,也就是一秒内画面变化数量。如果按照动画片来说,动画片的FPS就是24,是达不到60满帧的。也就是说,对于动画片来说,24帧时虽然没有60帧时流畅,但也已经是连贯的了,所以并不能说24帧时就算是卡住了。由此可见,简单地通过监视FPS是很难确定是否会出现卡顿问题了,所以我就果断弃了通过监视FPS来监控卡顿的方案。RunLoop:通过监控RunLoop的状态来判断是否会出现卡顿。RunLoop

iOS - 多线程总结

一多线程概念进程:系统中正在运行的一个应用程序.一个app就是一个进程.像我们进入后台划走的操作就是杀掉进程,每个进程都是独立的.线程:一个进程可以开启多个线程,线程是可以并行执行不同任务的,多线程可以充分的利用多核cpu来处理任务关系1.同一个进程内的所有线程共享本进程的地址空间,共享本进程的资源,比如内存cpu等,而进程之间则是独立的地址空间2.一个进程奔溃后,在保护模式下不会对其他进程产生影响,而一个线程奔溃后会导致整个进程奔溃线程的优缺点1.能适当提高程序的执行效果2.能适当提高资源的利用率3.线程上的任务执行结束后,线程会自动销毁缺点:开启线程是需要占用一定的内存空间的,开启的线程越

iOS - 多线程总结

一多线程概念进程:系统中正在运行的一个应用程序.一个app就是一个进程.像我们进入后台划走的操作就是杀掉进程,每个进程都是独立的.线程:一个进程可以开启多个线程,线程是可以并行执行不同任务的,多线程可以充分的利用多核cpu来处理任务关系1.同一个进程内的所有线程共享本进程的地址空间,共享本进程的资源,比如内存cpu等,而进程之间则是独立的地址空间2.一个进程奔溃后,在保护模式下不会对其他进程产生影响,而一个线程奔溃后会导致整个进程奔溃线程的优缺点1.能适当提高程序的执行效果2.能适当提高资源的利用率3.线程上的任务执行结束后,线程会自动销毁缺点:开启线程是需要占用一定的内存空间的,开启的线程越