desgard.com

SDWebImage Source Probe: Operation

很久没有更博客,最近都在忙着毕业设计和一些小项目,所以学习精力有些分散,读源码的时间大幅度缩水。是时候继续更新了。 在解读 Operation 部分的源码之前,需要先了解一下关于 NSURLSession 的一些知识。 对于 NSURLSession 的一些知识 NSURLSession 是于 2013 年随着 iOS 7...

复用的精妙 - UITableView 复用技术原理分析

本文截图来源于 爱奇艺电视果 iOS 客户端。 在现在很多公司的 app 中,许多展示页面为了多条数据内容,而采用 UITableView 来设计页面。在滑动 UITableView 的时候,并不会因为数据量大而产生卡顿的情况,这正是因为其复用机制的特点。但是其复用机制是如何实现的?我决定来探索一番。 Chameleon PROJECT Chameleon 是我长期以来一直关注的一个项目。接触过...

CFArray 的历史渊源及实现原理

在 iOS 开发中,NSArray 是一个很重要的数据结构。尤其 TableView 中的数据缓存与更新, NSArray 来缓存数据以及对于显示数据的修改操作。而在 Core Foundation 中 CFArray 与 NSArray 相互对应,这引起了笔者对...

load 方法全程跟踪

几天前 Github 的 RetVal 大神更新了可 debug 版本的 706 <objc/runtime.h> 源码,于是让源码阅读学习得以继续。本文将介绍个人学习 load 方法的全部流程。 load 方法的调用时机 从...

SDWebImage Source Probe: Downloader

为了进行图片下载操作,通过 SDWebImageManager 这座桥梁,有效控制了图片下载的时机和同缓存的协同操作。这篇来关注一下在 SD 中,Downloader Class 的具体实现。 Downloader 中的一些枚举 在 SDWebImageDownloader.m 中,可以发现这么一个属性: @property (strong, nonatomic)...

用 isa 承载对象的类信息

Effective Objective-C 2.0 - 52 Specific Ways to Improve Your iOS and OS X Programs...

SDWebImage Source Probe: Manager

在 SDWebImage Source Probe: WebCache 一文中,通过最常用的 sd_setImageWithURL 方法,来分析源码。而在其中,对于图片的 download 方法,也是需要理解的重点之一。它用于处理异步下载和图片缓存的类,当然也可直接拿来使用。SDWebImageManager 这个类,为 WebCache 、 SDWebImageDownloader 和...

weak 弱引用的实现方式

对于 runtime 的分析还有很长的路,最近在写 block 系列的同时,也回顾一下之前疏漏的细节知识。这篇文章是关于 weak 的具体实现的学习笔记。 runtime 对 __weak 弱引用处理方式 切入主题,这里笔者使用的 runtime 版本为 objc4-680.tar.gz。...

SDWebImage Source Probe: WebCache

最近两天,在完成工作业务之余,除了看书,自己也要开始深入的阅读经典的源码。来完善我的 iOS 源码探求 系列文章。 对源码的阅读是一个长久的学习过程,我会将业务中最常用的一些经典三方库拿出来进行学习。这一点我很敬佩 @Draveness 的精神,并向他看齐。 SDWebImage 简单介绍 SDWebImage 根据官方文档,其实就是提供了以下功能: Asynchronous image downloader with...

浅谈 block(2) - 截获变量方式

本文会通过 clang 的 -rewrite-objc 选项来分析 block 的 C 转换源代码。其分析方式在该系列上一篇有详细介绍。请先阅读 浅谈 block(1) - clang 改写后的 block...

浅谈 block(1) - clang 改写后的 block 结构

这几天为了巩固知识,从 iOS 的各个知识点开始学习,希望自己对每一个知识理解的更加深入的了解。这次来分享一下 block 的学习笔记。 block 简介 block 被当做扩展特性而被加入 GCC 编译器中的。自从 OS X 10.4 和...