将目标添加到Xcode项目

时间:2011-09-13 22:05:38

标签: iphone objective-c ios xcode ios4

我有一个iPhone应用程序,目前在应用程序商店中。我想制作实际上完全相同的应用程序,但它是免费的并且具有广告功能。

我的计划是有效地复制项目,创建一个新项目并将广告添加到代码中并作为单独的应用程序发布。但是,有人提到最好的解决方案是在现有应用程序中添加一个额外的目标,在运行时提供两个二进制文件。

对我来说似乎是一个很好的解决方案,但是我对如何改变代码以将广告内置到新目标中并保持原始状态保持不变感到有些困惑?

3 个答案:

答案 0 :(得分:7)

我按照 this 教程进行了操作,虽然很旧,但对于xcode 4基本相同。我复制了目标和p列表,确保我能够通过更改来运行它并且不会影响完整版目标。

然后我复制了不同的.xib文件。如果您在项目设置下查看某个地方,您可以找到一个列表,允许您选择包含哪些资源。在lite版本中包含lite版本的xib,在完整版本中分别包含完整版本。然后,您将能够编辑每个而不会影响另一个。

图标和图像可以以相同的方式更改。只需创建精简版图标集或其他图像集,并在精简目标的资源设置中包含精简图标,而不是完整版本的图像。

此外,您还需要创建一些预处理器宏。在构建选项卡中查找它们,并为每个预处理选项 - 调试,分发和发布创建一个名为LITE_VERSION(或任何你想要的,它并不重要)的宏。

允许您在相同的.h和.m文件中添加不同的代码。只需使用

#ifdef LITE_VERSION
// Lite version only code here
#endif

将两者分开。您还可以使用#ifndef LITE_VERSION仅将代码添加到完整版本。

就是这样!完成上述所有步骤后,您应该可以编辑lite版本的.xib文件,只将代码放入精简版或完整版,并为每个文件分别设置图像和图标。

答案 1 :(得分:2)

XenElement的答案是正确的。但你应该看到最好的做法。您应该有一个标识符类来检查目标。如果你在代码中的任何地方都使用宏,那对你和其他开发人员来说似乎也不好。在this little blog post中,您可以看到如何创建这种标识符类,并了解有关xcode中目标的一些最佳实践。

答案 2 :(得分:0)

我遵循了这个Just2us: How to create multiple targets for Xcode iPhone Projects教程。

我决定用Stu的线索更改步骤3,在付费版本中明确设置FULL_VERSION。

  

“为了解决没有意外地将LITE_VERSION定义为宏预处理器(从而意外地发布完整版本)的问题,我将这一小段代码放在头文件中(它只需要在代码库中的某个地方,只需确保所有配置都通用)“:

#ifndef LITE_VERSION
    #ifndef FULL_VERSION
        #error You probably forgot to specify if this is the Lite or Full version of the app
    #endif
#endif

PS:我在AppDelegate的#import之后写了上面的代码。