我正在运行时创建现有类的子类,并在其中添加几个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是否会从一些意外的地方窃取此内存,并且为此目的使用关联对象是否更安全?