前言
原创文章,转载请注明出自 唐巧的技术博客。
本文主要介绍 Objective-C 对象模型的实现细节,以及 Objective-C 语言对象模型中对isa swizzling
和method swizzling
的支持。希望本文能加深你对 Objective-C 对象的理解。
ISA 指针
Objective-C 是一门面向对象的编程语言。每一个对象都是一个类的实例。在 Objective-C 语言的内部,每一个对象都有一个名为 isa 的指针,指向该对象的类。每一个类描述了一系列它的实例的特点,包括成员变量的列表,成员函数的列表等。每一个对象都可以接受消息,而对象能够接收的消息列表是保存在它所对应的类中。
在 XCode 中按Shift + Command + O
, 然后输入 NSObject.h 和 objc.h,可以打开 NSObject 的定义头文件,通过头文件我们可以看到,NSObject 就是一个包含 isa 指针的结构体,如下图所示: