跳到主要内容

简述class_copyIvarList & class_copyPropertyList区别? ?

参考答案:

class_copyIvarListclass_copyPropertyList都是Objective-C的运行时函数,用于获取类的属性或实例变量的信息。它们之间的主要区别在于它们所获取的信息类型不同。

  1. class_copyIvarList:这个函数返回一个类的所有实例变量的列表。实例变量是类的属性,它们直接关联到类的实例(对象)。这个函数返回一个Ivar数组,其中每个Ivar结构体表示一个实例变量,包含变量名、类型、偏移量等信息。
  2. class_copyPropertyList:这个函数返回一个类的所有属性的列表。属性是Objective-C对象的一部分,它们通常通过@property关键字在类的接口中声明。这个函数返回一个objc_property_t数组,其中每个objc_property_t结构体表示一个属性,包含属性名、属性类型、属性特性(如nonatomic、readonly等)等信息。

总的来说,class_copyIvarList用于获取类的实例变量信息,而class_copyPropertyList用于获取类的属性信息。这两个函数都是Objective-C运行时系统的一部分,可以用于反射(reflection)和元编程(metaprogramming)等高级技术。