Objective-C运行时系统与内存管理详解
一、Objective-C运行时系统概述
Objective-C语言尽可能地将决策从编译时和链接时推迟到运行时,只要有可能就动态执行操作。这意味着该语言不仅需要编译器,还需要运行时系统来执行编译后的代码。运行时系统就像是Objective-C语言的一种操作系统,是语言得以运行的关键。
Objective-C程序与运行时系统的交互主要在三个不同层面进行:
1. 通过Objective-C源代码 :大多数情况下,运行时系统在幕后自动工作。只需编写和编译Objective-C源代码,就可以使用它。当编译包含Objective-C类和方法的代码时,编译器会创建实现语言动态特性的数据结构和函数调用。这些数据结构捕获类、类别定义和协议声明中的信息,包括之前讨论的类和协议对象、方法选择器、实例变量模板等。主要的运行时函数是发送消息的函数,由源代码中的消息表达式调用。
2. 通过Foundation框架中NSObject类定义的方法 :Cocoa中的大多数对象是NSObject类的子类,因此大多数对象继承了它定义的方法(NSProxy类是明显的例外)。NSObject的一些方法只是向运行时系统查询信息,这些方法使对象能够进行自省。例如:
- class 方法:用于让对象识别自己所属的类。
- isKindOfClass: 和 isMemberOfClass: 方法:用于测试对象在继承层次结构中的位置。
- respondsToSelector
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



