是否可以在运行时将Objective-C对象更改为其他类型?

时间:2015-04-27 20:34:35

标签: objective-c objective-c-runtime

在我知道它最终会是什么类型之前,我想要创建一个对象。我知道它的超类将是什么,并希望暂时创建该超类的具体实例,并允许其他对象以该形​​式使用它,直到可以创建它的“true”类。

我意识到这是非常疯狂的,我没有太高的期望,这是可能的,但如果我能做到这一点,那将是惊人的。我知道Obj-C运行时有一些非常强大的功能,所以认为它至少值得一提。

我查看了object_setClass,但是这似乎允许您在运行时从技术上更改对象的类,但它不允许您实际重新分配 new 实例在原始实例的地址处完成了自己的ivars,这正是我需要的,因为我不知道最终的类将是什么(它需要使用任何自定义子类)。

背景:我的目的是提供一个占位符对象,允许外部代码注册依赖项和/或保存引用,这样当对象最终被填入时,这些外部依赖项仍将保持并且他们不必更正他们的参考资料。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用NSProxy并最终代理"真实"你需要的基础对象。