以下的答案是百度的,仅做记录而已: 1. 利用运行时实际上也不是添加成员变量.已编译的类的内存布局是不变的,Class就是一个结构体,里面的成员不能改变.但是通过运行时可以将一个对象或基础类型变成指定Class对象的一个关联对象,他们两者的内存布局是分开的,与成员变量不同. 2.关联的并不是在指定Class上,而是指定的对象上,概念上有一定差别.objc_setAssociatedObject()这个函数接收四个参数,第一个是需要关联的对象,第二个是索引的一个KEY,第三个是被关联对象,第四个是