前面两篇博文中,简要对SDWebImage的缓存部分和多线程部分进行了分析。建议在阅读本篇内容前先看下缓存策略那篇,以对SDWebImage的基本内容有所了解。在本篇中,我们将对它的网络策略进行分析。我们知道SDWebImage的主要功能就是从远程主机上下载图片,所以前面的几个策略都是为这一目的提供支持的,而网络策略的好坏将直接决定库的性能。不过SDWebImage以GitHub上接近20000的star数向我们证明了它不俗的实力,下面就让我们一起看看吧。 继续阅读“SDWebImage 源代码剖析-网络部分”
WWDC2013 Hidden Gems in Cocoa and Cocoa Touch
这个Seesion介绍了Cocoa和Cocoa Touch框架中一些鲜为人知的特性,总共有29个tips,从中我挑一些比较常用的介绍一下。视频地址。 继续阅读“WWDC2013 Hidden Gems in Cocoa and Cocoa Touch”
WWDC2015 Networking with NSURLSession学习笔记
这个 Session 是我观看的第一个 WWDC Seesion,在线地址在这里。 继续阅读“WWDC2015 Networking with NSURLSession学习笔记”
SDWebImage 源代码剖析-多线程策略
前一篇文章从缓存策略的角度分析了SDWebImage
的部分代码,下面从多线程的角度对它的其他模块进行分析。 继续阅读“SDWebImage 源代码剖析-多线程策略”
SDWebImage 源代码剖析-简介及缓存策略
在上一篇文章中,我们对Masonry
的源代码进行了分析。今天我们将对另外一个在iOS 开发中广泛使用的库的源代码进行分析,这个库就是鼎鼎大名的SDWebImage
。下面是我个人对这个库的主要部分和缓存策略部分的代码分析和理解。由于本人才疏学浅,若有错误,请大家及时指出,不吝赐教。(注:由于写这篇博客的时间是17年3月,从那之后SDWebImage又历经了几个新的版本,因此现在的代码与这篇博客中会有所不同。) 继续阅读“SDWebImage 源代码剖析-简介及缓存策略”
Masonry 源代码剖析
Masonry 是一个用来代替苹果原生的AutoLayout 的自动布局框架。这个库的代码量不是很多,而且使用也很简单方便,那么就让我们深入到这个库的内部,看看它是怎么实现的。
Objective-C 中的block
block 是Apple 为C语言提供的语言扩展,其实质是:带有自动变量的匿名函数。block 在iOS的动画、异步网络请求以及GCD等中被广泛使用。但是,它的语法却有点复杂,有人甚至专门做了一个网站来记录block 的用法,从网址中就可以看出block 的语法有多令人生畏了。
揭开Runtime 的神秘面纱
概述
动态 vs 静态语言
Objective-C 是一门动态语言,刚接触Objective-C 的时候,你一定会为它使用方括号这种怪异的“函数调用”方式而感到惊讶。准确的说,Objective-C 中的如下语句
1 2 |
[receiver message] |
并不等同于C语言中的函数调用,而是向receiver 对象发送message 消息。C语言中的函数调用是在编译期间确定的,而Objective-C 是一门面向 Runtime 的语言,也就是说,它把消息发送的时机从编译&链接时延后到了运行时。这正是Objective-C 众多的黑魔法的源头所在。 继续阅读“揭开Runtime 的神秘面纱”
Objective-C 高级内存管理
Objective-C 提供了两种内存管理的方法,一是 ARC ,即 Automatic Reference Counting,二是 MRR,即 Manual Retain-release。苹果官方推荐的方法是 ARC,因为使用 ARC 时,我们不需要考虑这些复杂的管理过程,编译器会在编译时自动帮我们加上对应的代码。
Key-Value Observing 键值观察模式
Key-Value Observing 键值观察模式
键值观察模式(下面简称KVO)是建立在KVC 的基础上的,关于KVC,在前面一篇文章中已有介绍。