美文网首页iOS 开发继续加油
iOS GCD实际项目运用

iOS GCD实际项目运用

作者: 带你去旅行 | 来源:发表于2018-04-11 11:04 被阅读323次

GCD的解释及原理网上已经有详细的介绍了,这里我就只是把自己项目中常用到的记录下来,如果大家有更多的项目运用,请留言,我会及时学习并摘录进来,让不太喜欢理论而喜欢实际操作的人学到更多。

1、耗时操作

场景:(1)耗时操作:数据量比较大,而我们不可能一直等数据请求完再来刷新UI

           (2)增量更新:先加载本地数据,再请求接口是否有更新,如果有更新,请求数据后再回到主线程更新UI,同时更新数据库

            (3)。。。。。。

/**

*  解决耗时操作 - UI + 数据请求

*/

-(void)demo1

{

    NSLog(@"star");

   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        //这里操作耗时的任务 不管block是否运行结束,都不会阻塞UI线程

        for (NSInteger i = 0; i < 10; i ++) {

            NSLog(@"你好");

        }

        // dispatch_async会向dispatch_get_global_queue全局队列去添加新的任务

        //网络请求

        //加载网络图片

        //数据解析

        dispatch_async(dispatch_get_main_queue(), ^{

            NSLog(@"执行完了 - 刷新主线程");

        });

    });

    NSLog(@"end");

}

运行结果

2、多个接口操作

场景:(1)接口过多:现在一个接口越来越不能满足一个界面的需求,通常需要多个接口来管理一个界面的UI(增量更新同样可以用到

            (2)。。。。

/**

*  多个耗时操作异步执行  - 再去刷新UI

*/

-(void)demo2

{

    NSLog(@"star");

    //线程

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    //创建分组

    dispatch_group_t group = dispatch_group_create();

    dispatch_group_async(group, queue, ^{

        for (NSInteger i = 0; i < 10; i ++) {

            NSLog(@"数据请求1");

        }

    });

    dispatch_group_async(group, queue, ^{

        for (NSInteger i = 0; i < 10; i ++) {

            NSLog(@"数据请求2");

        }

    });

    /**

    *  回到主线程

    */

    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

        NSLog(@"刷新UI");

    });

    NSLog(@"end");

}

运行结果

相关文章

  • iOS GCD实际项目运用

    GCD的解释及原理网上已经有详细的介绍了,这里我就只是把自己项目中常用到的记录下来,如果大家有更多的项目运用,请留...

  • iOS GCD基本用法

    iOS编程中运用最多的多线程就是GCD和NSOperation,NSOperation是苹果对GCD的OC封装,更...

  • GCD (一)

    GCD (一) GCD中有三种队列类型: The main queue:跟主线程功能相同,在实际运用的时候,提交到...

  • iOS系统的任务管理-GCD探究(上)

    前言: iOS对任务的处理运用了多种线程技术,我们常用的有NSOperation和GCD,这篇文章着重研究GCD的...

  • NSOperation

    NSOperation是ios基于GCD的封装,实际上会使用GCD也就意味着会使用NSOperation,开发中个...

  • iOS 开源库、文章、源码整理

    iOS 开源库、文章、源码整理 iOS10本地推送,上线项目中的实际运用 深度解析浏览器中输入 URL 后发生了什么

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • [iOS 多线程] iOS多线程-GCD

    iOS多线程-GCD GCD的简介 GCD,全称为 Grand Central Dispatch ,是iOS用来管...

  • iOS多线程:『GCD』详尽总结

    iOS多线程:『GCD』详尽总结 iOS多线程:『GCD』详尽总结

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

网友评论

    本文标题:iOS GCD实际项目运用

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