clang:是⼀个由Apple主导编写,基于LLVM的C/C++/Objective-C编译器
把文件编译成cpp文件,语法:clang -rewrite-objc main.m -o main.cpp

就会在当前文件夹下生成.cpp文件

对象在底层会编译成(struct)结构体,里面包含了一个isa ,任何类都有一个属性isa:

属性就会走到底层的set,get方法:所有的set方法都会走到底层 objc_setProperty方法

每一个方法都有sel - imp :imp与SEL 的关系-> SEL : ⽅法编号 IMP : 函数指针地址
类的结构:

当类第⼀次从磁盘加载到内存时的结构

当类第⼀次被使⽤时的结构:

将需要动态更新的部分提取出来,存⼊class_rw_ext_t:

类整体结构

类方法和实例方法对比:
-(void) 表示实例方法,需要通过实例化对象调用方法
+(void) 表示类方法,不需要实例化就调用方法
类方法是可以调用类方法的,类方法可以调用类方法
类方法可以通过创建实例对象进行调用实例方法
实例方法里面的self是指首地址而类方法的self是指class

获取元类的方法:
添加头文件:#import <objc/runtime.h>
class_getInstanceMethod:获取实例方法

class_getClassMethod:获取 类方法

返回方法的具体实现:

获取所有方法:

网友评论