What is Life But One Chanllege After Another

Gif展示对比和优化

Gif展示对比和优化

Runtime之MetaClass

对于iOS开发者来说,元类一直是一个在面试时被重点考察的点,为什么在语言设计时要增加元类这个概念?他的优点是什么?他到底有什么作用呢?这篇文章我们从Runtime源码的角度和语言设计的角度来探讨MetaClass存在的原因以及他的存在解决了哪些问题。

Runtime之MetaClass

iOS KVC 实现探究

我们都知道iOS开发中有很多黑魔法,KVC就是其中之一,在平时开发中我们也会使用KVC去获取一些系统未公开的API方法,但同时我们可能要承担一些被拒或者因系统API改变导致的问题。这篇文章我们从源码的角度分析KVC的实现。

iOS KVC 实现探究

Runtime之KVO

KVO(Key-Value-Observer)即键值监听,我们在平时的开发中通常用来监听对象属性的变化,比如UIScrollViewContentOffset,不过同时我们要注意在不需要继续监听的时候及时的移除监听,否则可能会导致崩溃。因此这篇文章让我们更好的了解KVO

Runtime之KVO

Runtime之对象的一生

在所有的面向对象语言中,万物皆对象。Objective-C也不例外,这篇文章我们从Runtime的源码去分析一个对象从创建到销毁的整个过程中都做了哪些操作,同时也加深我们对内存管理的理解。

Runtime之对象的一生

Runtime之消息转发

我们都知道,在iOS开发中方法的调用实现实际上是通过消息发送的机制实现的,我们可以简单的理解为:

[A a];调用A类的a方法,实际上就是给类A的a方法发消息。

在这个过程中又会经历:方法查找、方法调用、方法转发这几个阶段,下面我们来通过这几个阶段来看下Runtime在这几个环境是如何实现的。

Runtime之消息转发

Runtime之方法交换

简介

前面几篇文章我们介绍了Runtime中NSObject的数据结构,下面我们来介绍下Runtime在平时开发过程中的常用方法以及实现原理。

Runtime之方法交换

Runtime之NSObject结构

简介

OC是一门面向对象的语言,而对于面向对象语言来说一切皆对象。相信每个iOS开发者都很清楚在OC中NSObject是绝大多数对象的父类。OC是一门动态语言,而动态的实现则是离不开Runtime。那么OC中的对象在Runtime中又是以一种什么样的形态出现的呢?本篇文章我们来详细介绍OC对象在Runtime中的结构。

Runtime之NSObject结构

应用启动-Main函数之前的那些事儿

上一篇文章中我们介绍了应用启动在objc_init方法执行前的调用堆栈,根据这个堆栈我们可以看出在main函数之前实际上系统内核以及dyld还做了很多的操作,那么这篇文章我们来详细的看一下在这个过程中到底做了哪些事情。

应用启动-Main函数之前的那些事儿

Mach-O 探究

Mach-OMach Object文件格式的缩写,它是一种用于可执行文件,目标代码,动态库,内核转储的文件格式。作为a.out格式的替代,Mach-O提供了更强的扩展性,并提升了符号表中信息的访问速度。
Mach-O格式为大部分基于Mach内核的操作系统所使用的,包括NeXTSTEP, Mac OS XiOS,它们都以Mach-O格式作为其可执行文件,动态库,目标代码的文件格式。

Mach-O 探究