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

本文共 2171 字,大约阅读时间需要 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

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

 

参考:

 

转载于:https://www.cnblogs.com/cocoajin/p/3691577.html

你可能感兴趣的文章
了不起的全能MAC系统监测工具iStat Menus 5下载
查看>>
当ppt演示文档过大应该怎么办如何压缩
查看>>
数据推荐系统系列 8种方法之零 简单方式 SlopeOne 方式 (补充简单的方式)
查看>>
vue 快速构建 vue-cli
查看>>
最简单U盘FAT32转换NTFS格式的方法_不用格盘_不用担心丢失数据
查看>>
简单选择排序
查看>>
iOS5.1中无法正常显示表情字符
查看>>
如何在CentOS 7.x中安装OpenERP(Odoo)
查看>>
Mybaits常用的10种通用写法
查看>>
MySQL 中主键被其他列引用时,修改主键为自增
查看>>
thinkphp之Excel的导出
查看>>
Composer自动加载功能
查看>>
数据库在一对一、一对多、多对多怎么设计表关系
查看>>
IOS 学习---常用UI控件的语法及使用
查看>>
巧用CursorLoader实时更新界面上显示的数据
查看>>
Ubuntu下截图软件安装设置
查看>>
jQuery的before()方法的超简易版,用于个人理解源码以及回调函数
查看>>
幸运大转盘抽奖 抽奖算法 程序实现逻辑
查看>>
IntelliJ IDEA系列编辑器安装GO插件
查看>>
程序员(程序媛)容易忽略的几个细节!
查看>>