【问题标题】:iOS interface declaration based on #if evaluation基于#if求值的iOS接口声明
【发布时间】:2013-08-08 11:58:47
【问题描述】:

我需要一种方法来根据 NSUserDefaults 中的值有条件地定义类的超类。

我知道可以根据#ifdef 指令定义不同的接口。我想知道#if 指令是否可以达到同样的效果? 如果没有,还有其他方法可以实现我的目标吗?

谢谢!

【问题讨论】:

    标签: iphone ios interface superclass conditional-compilation


    【解决方案1】:

    你不能用预处理器指令来做到这一点,因为它会在编译时确定,而 NSUserDefaults 是你想在运行时检查的东西。

    我认为这个帖子可以帮助你Dynamically change an object's superclass 无论如何,你确定这是你能做的最好的设计吗?为什么要在运行时根据 NSUserDefaults 中的内容更改超类?

    【讨论】:

    • 我目前对同一件事有两种不同的实现。每个都使用不同的继承。我希望用户能够在两者之间切换并在启动之间保持这种选择....
    • 我仍然不确定这是否是一个好的模式。通常不同的继承意味着完全不同的东西,而特定类的不同子类意味着“某些东西被添加到这个类中,某些东西可能被覆盖”。您是否考虑过使用协议或类别来代替不同的继承?
    • 是的,两个不同的类不是一个选项,因为这个类可以从应用程序中的许多地方访问,如果有两个,我将不得不在所有这些地方调用适当的一个.
    • 如果你通过处理它们的协议而不是它们的实际实现来访问这些类,你可以轻松克服这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2019-07-16
    相关资源
    最近更新 更多