黄成都的技术博客

万事开头难,然后中间难,最后结尾难。

自己实现一个Promise

概述Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。Promise对象有以下两个特点。 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操......

一次CocoaPod库的封装总结

概述通过CocoaPods来管理项目的依赖关系可以说是iOS开发的基本入门技能了。使用CocoaPods管理有如下几个好处: 避免了同一个第三库在不同项目之间的复制粘贴,第三方库升级以后,只需要更新Podfile即可。 项目结构更清晰、可以更直观的查看项目依赖的第三方库。 可以灵活的指定第三库的版本、分支。方便项目管理。 对于移动端的组件化开发的基础,一个公司组件化的成功与失败很大程度上决......

前端CORS和XMLHttpRequest全方位详解

1 CORS的详解 1.1 CORS的基本套路上一篇文章,我详细讲解了JSONP的实现和原理,但是毕竟它是一个很古老的东西,就是所谓的落伍了,现在浏览器已经有更好的套路来支持跨域请求了。俗话说得好,上帝为你关上一扇门的时候,必然会为你开启一扇窗,我们日常使用的浏览器也是这个套路,浏览器开启的窗户就是CORS,这个东西呢,可以说是前端独有的,我在做iOS的时候,是没有听说过这个东西的。也就是说......

前端JSONP的原理与实现以及XSS,CSRF的相亲相爱

1 JSONP的原理与实现 1.1 同源策略前端跨域是每个前端人绕不过的坎,也是必须了解的一个知识点。我记得第一次遇到前端跨域这个坑的时候,真是无语到极点,对于一个移动端出身的人来说,觉得这个玩意无可理喻。但是后来慢慢了解,觉得前端的同源策略是非常有必要的。同源策略就是浏览器默认让www.baidu.com不能加载来自www.google.com的数据。对于现在来说,所有数据都是同源的可能性......

SDWebImage源码解析(四)

1 概述这篇博文将分析SDWebImageDownloader和SDWebImageDownloaderOperation。SDWebImage通过这两个类处理图片的网络加载。SDWebImageManager通过属性imageDownloader持有SDWebImageDownloader并且调用它的downloadImageWithURL来从网络加载图片。SDWebImageDownlo......

SDWebImage源码解析(三)

1 概述这篇博文中,我将分析SDWebImageManager和SDImageCache。SDWebImageManager拥有一个SDWebImageCache和SDWebImageDownloader属性分别用于图片的缓存和加载处理。为UIView及其子类提供了加载图片的统一接口。管理正在加载操作的集合,这个类是一个单列。同时管理各种加载选项的处理。SDImageCache负责SDWeb......

SDWebImage源码解析(二)

1 概述SDWebImage使用了很多工具类来对图片的处理。比如获取图片类型、图片放大缩小、GIF图片处理、图片解压缩处理等。接下来我就要分析下面这几个工具类的实现。 2 NSData+ImageContentType分析这个类提供了一个类方法sd_imageFormatForImageData。通过这个方法传入图片的NSData数据,然后返回图片类型。图片类型通过SDImageFormat......

SDWebImage源码解析(一)

1 概述SDWebImage基本是iOS项目的标配。他以灵活简单的api,提供了图片从加载、解析、处理、缓存、清理等一些列功能。让我们专心于业务的处理。但是并不意味着会用就可以了,通过源码分析和学习,让我们知道如何用好它。学习分析优秀源码也可以从潜移默化中给我们提供很多解决日常需求的思路。下面就是一张图来概述SDWebImage的所有类: 通过对这个图片的分析,我们可以把SDWebImag......

AFNetWorking源码之AFSecurityPolicy

1 HTTPS以及SSL/TSLSSL(Secure Sockets Layer, 安全套接字层),因为原先互联网上使用的HTTP协议是明文的,存在很多缺点,比如传输内容会被偷窥和篡改。SSL协议的作用就是在传输层对网络连接进行加密。 到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF就在那年把SSL标准化。标准化之后的名称改为 TLS(Transport Layer......

AFNetWorking源码之AFURLRequestSerialization

1 概述AFURLRequestSerialization主要实现了根据不同情况和参数初始化NSURLRequest对象的功能。只有AFHTTPSessionManager有requestSerialization,默认是AFHTTPRequestSerializer对象。尤其是我们使用MultipartForm请求的时候,可以使用它帮我们完成繁杂的请求头拼接过程,这个是最值得推荐的。 在阅......