iDev

A collection of 2 posts
Objective-C Runtime详解
iDev

Objective-C Runtime详解

.. toc:: 最近在学习RxSwift,对于DelegateProxy如何进行消息转发问题比较感兴趣,所以仔细阅读了源码,发现其在底层利用了Objective-C Runtime的特性实现消息转发,因此在网上找到了这一系列的文章。 这篇文章大部分内容转自南峰子的技术博客。由于年代久远的关系,其部分图片已经404,遂在这篇文章中进行补齐,同时对于文中描述的一些不是很清楚的内容加入了我的理解。 实际上该系列文章下分六篇独立文章,在我的版本中将单独的文章予以合并以图后续查阅方便。 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时能够更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。 这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。这个运行时系统即Objc Runtime。Objc Runtime其实是一个R
59 min read