Objc Runtime

Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。
当然这就意味着OC的不仅仅需要一个编译器还需要一个运行时的系统来执行编译代码.这个运行时系统即Objc RuntimeObjc Runtime其实是一个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。

Runtime作用:

  1. 封装:在这个库中,对象可以用C语言中的结构体表示,而方法可以用C函数来实现,另外再加上了一些额外的特性。这些结构体和函数被runtime函数封装后,我们就可以在程序运行时创建,检查,修改类、对象和它们的方法了。
  2. 找出方法的最终执行代码:当程序执行[object doSomething]时,会向消息接收者(object)发送一条消息(doSomething),runtime会根据消息接收者是否能响应该消息而做出不同的反应。

使用方法:
通过objc_getClass来获取对象的isa
注意:我们在一个类对象调用class方法是无法获取meta-class,它只是返回类而已。

注意:在objc/runtime 方法中是基于c语言的 因此语法大多为c语言 比如:字符串 %s和“”(而不是%@和@“”), 定义对象也没有*符号
例如:
Class MySubClass = objc_allocateClassPair([MyClass class], "MySubClass", 0);

参阅学习连接

  1. 南峰子博客

  2. 常见type:几种取值查看

  3. Property Type String

  4. runtime苹果官方文档

  5. 关联对象

  6. 深入浅出cocoa消息

  7. 苹果官方消息转发文档

  8. iOS:Objective-C中Self和Super详解

  9. 官方运行时文档

  10. Objective-C的动态特性