美文网首页
ios多异步任务后执行操作问题

ios多异步任务后执行操作问题

作者: 辣条少年J | 来源:发表于2019-07-21 00:18 被阅读0次

原项目出现几个问题,今天做了些修改,其中包括有多异步任务后执行某操作的问题,就此做个总结。
1、进入app主页的时候信息加载很慢,原因是进入时使用了多个异步请求,并没有处理好异步请求的同步问题,即没有做好两次异步请求后继续操作的同步,(多次异步任务后的执行某任务,异步任务group化)
解决方案:
使用dispatch_group的组操作方式,dispatch_notify可在diaptch_group所有任务结束后监听到结束消息。使用nsurlsession发请求,由于nsurlsession只能做异步请求,需要对group里的任务进行加锁保证group任务里的操作同步,加锁使用dispatch_semp_t信号量对象。注意dispatch_semp_create创建时参数需要传0,值的具体含义可以自行百度。期间试图通过直接使用信号量即使用其原有的请求函数时并不能达到效果,原因是请求没有进回调,至于为什么没有进入回调,原因待查。
延伸:
多次异步任务后的执行某任务解决方案:
一、即使用dispatch_group dispath_notify方式,可保证多个异步任务无顺序执行,若需要顺序执行需要书序执行,可使用dispatch_enter dispatch_leave方式,需要注意的是dispatch_group里的任务需是同步任务
二、使用信号量和计数,不使用dispatch_group,单个异步任务执行完成后计数值加,值等于任务数后说明所有任务执行完成,释放信号量,执行后续操作。这时需要保证该计数值的原子性,保证其线程安全

dispatch_group dispatch_group_notify模式类似于信号量机制,notify里的任务在多任务执行完后多个信号量释放后方执行,

2、文件列表图片加载时崩溃,原因是demo里面的sdwebimage和lib里使用的sdwebimage版本不同,demo里的sd并未提供lib里使用的相应方法所致
解决方案:
用lib库调用的sd替换demo里的sd
3、前几次调试的时候始终报 smartdelagate没有x86定义之类的问题,原因是真机运行时,使用的是模拟器的lib包所致
4、在demo里面出现崩溃现象,工程能进入Lib包相应crash位置(Lib里有断点也能进入)但是没有调试信息,原因是lib工程的build设置了release版本的优化等级optimizable level,在build setting里,
解决方案:
将optimizable level release的值设置为和debug相同即可。

相关文章

  • ios多异步任务后执行操作问题

    原项目出现几个问题,今天做了些修改,其中包括有多异步任务后执行某操作的问题,就此做个总结。1、进入app主页的时候...

  • GCD 栅栏 dispatch_barrier

    有的时候需要异步执行两组操作,第一组操作(任务1、任务2、任务3)执行完毕后,才执行第二组(任务4、任务5)。这样...

  • 02、NodeJS-基础

    一、异步编程 异步操作 Node大量采用异步操作,即任务不是马上执行,而是直接插入任务队列的尾部,等前面任务执行完...

  • 02、NodeJS-基础

    一、异步编程 异步操作 Node大量采用异步操作,即任务不是马上执行,而是直接插入任务队列的尾部,等前面任务执行完...

  • GCD dispatch_barrier_async和dispa

    1、栅栏函数使用场景 异步执行两组操作,且第一组操作(多个任务)执行完成后,才开始执行第二组操作(多个任务)。 2...

  • 浅谈Android异步任务

    异步任务无处不在,在Android中 耗时操作 如网络请求 IO操作 复杂计算都是这一范畴,那么...执行异步任务...

  • dispatch_group_notify 异步任务通知

    iOS异步任务,异步执行四个任务等待所有任务都完成之后执行总任务.这个可能在实际的需求中会存在多个网络请求但是需要...

  • Android AsyncTask基础

    AsyncTask是Android为了简化异步操作而封装的异步任务操作抽象类。当我们需要在程序中执行耗时的异步操作...

  • js 异步执行顺序

    js的执行顺序,先同步后异步异步中任务队列的执行顺序: 先微任务microtask队列,再宏任务macrotask...

  • JavaScript事件循环机制

    JavaScript单线程执行 同步栈执行完成后,再执行异步队列 异步队列中分为宏任务和微任务 微任务比宏任务优先...

网友评论

      本文标题:ios多异步任务后执行操作问题

      本文链接:https://www.haomeiwen.com/subject/qpiplctx.html