在runtime源码看objc_class声明时会发现有三个定义
![](https://img.haomeiwen.com/i8092146/f842211bcea73068.png)
分别声明在
runtime.h``objc-runtime-new.h``objc-runtime-old.h
中。进入到
objc.h
会看到一个宏#if !OBJC_TYPES_DEFINED #endif
![](https://img.haomeiwen.com/i8092146/0f483600da9edec5.png)
而objc_class被包裹其中,
OBJC_TYPES_DEFINED
可以声明为#define OBJC_TYPES_DEFINED 1
![](https://img.haomeiwen.com/i8092146/e7f4cbed137953e3.png)
所以
objc.h
声明的objc_class
实时上并没有生效。实时上,经过调试,真正的定义是在objc-runtime-new.h中
理解objc运行时一:类是什么
网友评论