desgard.com

用 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...

objc_msgSend消息传递学习笔记 - 消息转发

该文是 objc_msgSend消息传递学习笔记 - 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文。 消息转发机制(message forwarding) Objective-C 在调用对象方法的时候,是通过消息传递机制来查询且执行方法。如果想令该类能够理解并执行方法,必须以程序代码实现出对应方法。但是,在编译期间向类发送了无法解读的消息并不会报错,因为在 runtime 时期可以继续向类添加方法,所以编译器在编译时还无法确认类中是否已经实现了消息方法。 当对象接受到无法解读的消息后,就会启动消息转发机制,并且我们可以由此过程告诉对象应该如何处理位置消息。 本文的研究目标:当 Class 对象的...