Xavier's Blog

Xavier's Blog

Thoughts, stories and ideas.

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
Page 365 of 365: 我的2019
Thoughts

Page 365 of 365: 我的2019

就在昨天,趁我睡着的时候彻底和2019年道了别,在2020的开头也是时候回顾我的2019年了。对于这一年,算是真正的经历了几件大事,也慢慢开始触及我原来从来没有也未曾感兴趣的领域,甚至开始思考一些人生之类看似虚无缥缈的问题。这似乎就是别人所谓的成长,在我看来无非是对未来不确定因素的恐慌,一切似乎看得清又看不清。 毕业 上学应该会霸占每一位中国青少年极多的少年时光,我也不例外。相比于初中高中,在大学似乎终于有机会放飞自我,做我真正热爱的事情。也从大学之后,真正的感受到了什么是时光如流水,这4年过的太快,快到让人难以置信。 回头想来也算没荒度人生,我担任过学工的站长,说来也奇怪,在我任站长的一点经历了很多的第一次,第一次举办线上考试,在新生入学那几天我们开发的系统为近1万名新生提供服务,第一次组织易班,第一次举办开学典礼发言人遴选,第一次数字化十佳辅导员投票系统,直到最后我们还得到一间宽敞的、崭新的办公室,虽然装修好了之后就换届了,但这也算是学校领导对我们近一年工作的肯定;也以第一作者身份发表过论文,在与导师一封封邮件中反复修改,尽管四处被拒,但在大三行将结束的那个期末传来了
8 min read