0

我创建了一个运行时类,然后将一个实例调配为该新类的一个实例。

MyClass *object = [MyClass new];
Class subclass = objc_allocateClassPair([MyClass class], "MyClass_RuntimeClass", 0);
objc_registerClassPair(subclass);
object_setClass(object, subclass);

这工作正常。swizzling 后,我可以调用 MyClass 上定义的方法和设置属性。

唯一的问题是调试器不再显示对象的属性。

Apple 似乎已经通过他们的 KVO 运行时类克服了这个问题。

我尝试使用 class_addProperty 在新类上添加属性,但这失败了,因为它们已经定义了。

有什么我想念的吗?

4

1 回答 1

0

Apple 重写了class调用超级实现的方法,因此实际上返回了原始类(在您的情况下MyClass)。如果调试器使用该class属性来决定显示哪些属性,它会感到困惑,因为它没有定义MyClass_RuntimeClass.

于 2014-04-19T09:13:29.703 回答