iOS 线程操作库 PromiseKit

官网:http://promisekit.org/

github: https://github.com/mxcl/PromiseKit/tree/master

一:安装

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

二:使用

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

我们传统的GCD做法:

    //创建imageViewUIImageView *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]];//回到主线程刷新UIdispatch_async(dispatch_get_main_queue(), ^{theImageV.image = [[UIImage alloc]initWithData:data];});});

使用 Promise的做法

    //使用Promisedispatch_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:nilcancelButtonTitle:@"Cancel"otherButtonTitles:@"Lose Changes", @"Panic", nil];alert.promise.then(^(NSNumber *dismissedIndex){NSLog(@"clock index : %@",dismissedIndex);});

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

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

参考:http://promisekit.org/

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

iOS 线程操作库 PromiseKit相关推荐

  1. iOS子线程操作总结

    子线程同步与异步: dispatch_sync(),同步添加操作.他是等待添加进队列里面的操作完成之后再继续执行. dispatch_queue_t concurrentQueue = dispatc ...

  2. iOS 数据库操作(使用FMDB)

    iOS 数据库操作(使用FMDB)   iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...

  3. iOS线程生命周期的监控

    iOS系统通过Core Services层的Foundation框架提供基于OC语言的NSThread和NSOperationQueue类来实现对线程和线程池的管理和使用.同时也提供了一套基于C语言的 ...

  4. iOS开发--开源库

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  5. iOS 常用第三方库及插件

    //菜单切换 https://github.com/pujiaxin33/JXCategoryView //各种导航栏样式 https://github.com/rickytan/RTRootNavi ...

  6. iOS常用第三方库大全,史上最全第三方库收集

    下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...

  7. IOS常用第三方库《转》

    UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...

  8. iOS 开发第三方库全集

    下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...

  9. js 包含某个字符串_[译] 5 大 JavaScript 字符串操作库

    原文地址:5 String Manipulation Libraries for JavaScript 原文作者:Mahdhi Rezvi 译文出自:掘金翻译计划 本文永久链接:https://git ...

最新文章

  1. Django从理论到实战(part45)--下载CSV文件
  2. 基于json的jquery地区联动
  3. python中函数分为哪四类_Python函数参数分类原理详解
  4. 使用jRebel在IntelliJ IDEA 中进行 Java 热部署
  5. python必背语法_python常用语法合集
  6. 四元数乘法_复数的意义——四元数
  7. extjs 方法执行顺序_百战程序员:方法论
  8. 计算机网络 教学大纲 谢希仁,《计算机网络》教学大纲.doc
  9. 关键词分词工具_运用表格宏对阿里国际站关键词库进行分组
  10. Keil C51 的printf
  11. HDMI调试基本原理
  12. 云计算需要学什么内容 学完可以胜任哪些岗位
  13. 债券数据集:绿色债券数据集、历时新发、发行债券、DCM定价估值四大指标数据
  14. 李沐动手学深度学习V2-RNN循环神经网络从零实现
  15. 服务器虚拟化用什么显卡,显卡虚拟化使用及配置技术
  16. oracle asm omf,Oracle Managed Files,OMF
  17. 宏基因组分箱CheckM评估结果的提取
  18. Excel获取字体颜色信息的函数操作FgColor函数
  19. mysql 字段 下拉列表_用数据库表填充下拉列表框
  20. c8051f单片机c语言看门狗例程,stc单片机看门狗喂狗程序

热门文章

  1. python pil_使用Python的PIL模块来进行图片对比
  2. java 静态内部类 弱引用_Java基础 强引用、弱引用、软引用、虚引用
  3. android 多个属性值,android布局属性值fill_parent和match_parent
  4. TM1810-3, TM1810-2 LED恒流驱动IC
  5. list.add时报错:Exception in thread “main“ java.lang.UnsupportedOperationException
  6. 仓库码放要求_货物码放规范
  7. 计算机应用问题,计算机应用中存在的问题及解决
  8. BitMap 原理代码记录
  9. java中setid(),Java Process.setId方法代碼示例
  10. c语言编程高价是啥,有哪位高手可以帮我做几道c语言编程,有钱的呀,价格可以商量...