1

我刚刚为我的应用程序的 Lite 版本创建了一个新目标。Lite 应用程序仅使用我在主应用程序中拥有的基类的一部分,即它不需要使用要求它导入 4 或 5 个文件的选项。

我的问题是,从设计的角度来看,处理这个问题的最佳方法是什么,以便我的 Lite 版本只能使用它需要的类的一部分?显然,一种解决方案是我只是将这 4 个不必要的文件导入 Lite 构建阶段,然后只使用整个类(甚至是它不需要的部分)。不过,这似乎效率低下。我知道如果 Lite 版本正在运行,我可以执行 ifndef 来阻止导入这些文件,但是如何阻止类中的代码也不会被编译器拾取?

更好的方法是让我的 Lite 版本创建一个只使用它需要的选项的 Base 类的子类吗?但是我相信,我还需要导入那些不必要的文件吗?

对此有点困惑,我第一次创建了另一个使用主目标代码的目标。任何帮助表示感谢。

4

2 回答 2

1

将 common/lite 功能放在一个超类中。子类中的重功能。

于 2012-11-08T21:15:18.090 回答
1

正如另一个答案指出的那样,您可以通过将精简功能放在子类中并将完整功能放在超类中来处理这个问题。

另一种选择是使用单个类,并在 Objective-C 类别中添加全部功能。本质上,您可以在类别中定义方法来补充或替换基本实现中的方法。

然而,与子类不同的是,类别中定义的方法不能调用super来获得基类的功能。super仍然指的是基类的超类,无论是 NSObject、UIDocument 还是你拥有的——而不是没有类别的实现。

优点是您只有一个类名,因此实例化您的类(或类)的代码不需要使用诸如#ifdef切换类和#includes 之类的东西,具体取决于您构建的是精简版还是完整版。

于 2012-11-09T17:21:58.750 回答