在运行时为ivars和关联对象存储

时间:2018-12-28 10:22:50

标签: ios objective-c runtime

我正在运行时创建现有类的子类,并在其中添加几个ivars。然后,将我的原始类替换为在运行时创建的类:

Class RuntimeClass = objc_allocateClassPair(myObject.class, "RuntimeClass", 0);
class_addIvar(RuntimeClass, "_firstIvar", sizeof(NSString *), log2(sizeof(NSString *)), @encode(NSString *));
class_addIvar(RuntimeClass, "_secondIvar", sizeof(NSString *), log2(sizeof(NSString *)), @encode(NSString *));
object_setClass(myObject, RuntimeClass.class);

我很好奇的是,我的ivars存放在哪里?我原来的班级没有它们,但是已经为该班级分配了确切的内存量。

这些ivars是否会从一些意外的地方窃取此内存,并且为此目的使用关联对象是否更安全?

0 个答案:

没有答案