仅使用来自不同目标的类的一部分

时间:2012-11-08 21:02:28

标签: iphone objective-c ios xcode cocoa-touch

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

与子类不同,类别中定义的方法无法调用super来获取基类的功能。 super仍然引用基类的超类,无论是NSObject,UIDocument还是你有什么 - 不是没有类别的实现。

优点是你只有一个类名,所以实例化你的类(或类)的代码不需要使用像#ifdef这样的东西来切换类和#includes,这取决于你是否是建立精简版或完整版。