博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 线程操作库 PromiseKit
阅读量:7282 次
发布时间:2019-06-30

本文共 2119 字,大约阅读时间需要 7 分钟。

iOS 线程操作库 PromiseKit 

官网:

github:

 一:安装

  • 第一种方式使用 cocoaPods 
  • 直接安装方式:下载PromiseKit 先如图文件导入你的项目 
  • 然后,再导入 Chuzzle.h,m 文件 两个文件 下载:

二:使用

我们演示一个异步下载图片,然后加载到  imageView上;

我们传统的GCD做法:

//创建imageView    UIImageView *theImageV = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)];    theImageV.backgroundColor = [UIColor grayColor];    [self.view addSubview:theImageV];            //图片链接    NSString *imageURL = @"http://f.hiphotos.baidu.com/image/w%3D2048/sign=5545a5d7af4bd11304cdb0326e97a60f/2f738bd4b31c87013c5bf342257f9e2f0608ffa1.jpg";        //异步加载图片并显示    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{                NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]];                //回到主线程刷新UI        dispatch_async(dispatch_get_main_queue(), ^{            theImageV.image = [[UIImage alloc]initWithData:data];        });    });

使用 Promise的做法

//使用Promise    dispatch_promise(^{                        NSString *imageURL = @"http://g.hiphotos.baidu.com/image/h%3D1050%3Bcrop%3D0%2C0%2C1680%2C1050/sign=9a06c1578fb1cb1321693813e8646d2d/1b4c510fd9f9d72acef7baa5d62a2834359bbbf3.jpg";        return imageURL;                    }).then(^(NSString *url){                NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];        return data;            }).then(^(NSData *data){                theImageV.image = [[UIImage alloc]initWithData:data];    });

 三:使用 PromiseKit+UIKit :

#import "PromiseKit+UIKit.h" 

   

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You Didn’t Save!"                                                    message:@"You will lose changes."                                                   delegate:nil                                          cancelButtonTitle:@"Cancel"                                          otherButtonTitles:@"Lose Changes", @"Panic", nil];        alert.promise.then(^(NSNumber *dismissedIndex){                NSLog(@"clock index : %@",dismissedIndex);            });

 

四:从上面的两个例子,我们可以看出 PromistKit ,可以理解为每一次操作都是一个 Promise 即承诺,每一个承诺都将有一个结果,所以就有了 .then.then,,,.cath

这种方式的写法,线程更安全,代码更友好

 

参考:

 

转载地址:http://lozjm.baihongyu.com/

你可能感兴趣的文章
渗透&&探测 ( ICMP 篇)
查看>>
容器监控实践—Prometheus的配置与服务发现
查看>>
dubbo源码解析(三十九)集群——merger
查看>>
PAT A1022
查看>>
捋一捋React的生命周期
查看>>
【跃迁之路】【731天】程序员高效学习方法论探索系列(实验阶段488-2019.2.21)...
查看>>
HTTP中Accept与Content-Type区别
查看>>
RunC容器逃逸漏洞席卷业界,网易云如何做到实力修复?
查看>>
PAT A1043
查看>>
SAP S/4HANA生产订单的BAdI增强点之Initialize方法
查看>>
css加载会造成阻塞吗
查看>>
天天都在使用CSS,那么CSS的原理是什么呢?
查看>>
可视化开发脚手架
查看>>
springboot jar 启动脚本
查看>>
现代JS中的流程控制:详解Callbacks 、Promises 、Async/Await
查看>>
如何在微软Azure上设置以太坊私有区块链
查看>>
Docker 文档(目录)
查看>>
你不知道的Virtual DOM(四):key的作用
查看>>
吴恩达机器学习笔记-神经网络的代价函数和反向传播算法
查看>>
前后端的分离模式
查看>>