【发布时间】:2015-04-27 20:34:34
【问题描述】:
我有一种情况,我想在知道它最终是什么类型之前创建一个对象。我知道它的超类是什么,并且想临时创建该超类的具体实例并允许其他对象以这种形式使用它,直到可以创建它的“真正”类。
我意识到这太疯狂了,我对这是可能的期望不高,但如果我能做到这一点,那就太棒了。我知道 Obj-C 运行时有一些非常强大的功能,所以认为至少值得一问。
我查看了object_setClass,虽然这似乎允许您在运行时从技术上更改对象的类,但它不允许您实际重新分配 new 实例,完成在原始实例的地址有自己的 ivars,这正是我需要的,因为我不知道最终类将是什么(它需要与任何自定义子类一起使用)。
背景:我的目的是提供一个占位符对象,它允许外部代码注册依赖项和/或持有对的引用,这样当对象最终被填充时,那些外部依赖项仍然会持有并且他们不必更正他们的引用。
【问题讨论】:
-
我很确定尝试这样做会导致各种危险。对内部结构有深入了解的人可能会这样做,但它很容易在 Apple 的下一次小更新中中断。
-
是的,它必须是稳定且定义明确的,如果不符合常规的话。
-
试着解释一下你真正需要做什么,我们可以看看是否有比这更好的解决方案。
-
@JeffHay 是的,这些很棒,我以前用过,但在我能看到的情况下,不要专门帮助我。
标签: objective-c objective-c-runtime