代码之家  ›  专栏  ›  技术社区  ›  nevan king

如何为多个目标使用不同的.h文件?

  •  2
  • nevan king  · 技术社区  · 14 年前

    我有一个有几个目标的项目。在我的大部分课程中,我可以使用一个 .h 文件和更改中的详细信息 .m 文件(为每个目标添加不同的.m文件)。

    为了我的其中一个 UIViewController 子类,我需要声明不同的 UILabel IBOutlet 对于不同的目标(每个目标根据可用的内容显示不同的标签集)。问题是无法针对头文件。在它们旁边没有用于指定目标成员身份的复选框。

    我处理这个问题的方法就是为所有目标添加出口,而忽略未使用的出口。看起来不太理想。

    我需要为此使用头构建阶段吗?解决这个问题的最佳方法是什么?谢谢。

    编辑: 我应该提到,我希望所有.h文件都具有相同的名称: PlaceViewController.h .

    3 回复  |  直到 10 年前
        1
  •  3
  •   Sharjeel Aziz    14 年前

    可以使用预处理器指令选择性地包括头文件。例如

    #if TARGET_OS
       #import "FirstTarget.h"
    #else
       #import "SecondTarget.h"
    #endif
    

    如果标题的名称相同,则可以对不同的目标使用不同的文件夹:

    #if TARGET_OS
       #import "First/Target.h"
    #else
       #import "Second/Target.h"
    #endif
    

    你可以阅读更多关于 条件句 here .

        2
  •  1
  •   Jason Foreman    14 年前

    头不会自行编译,但会包含在随后编译的其他文件中。可以在这些文件中使用条件编译来包含目标的正确头。为每个目标在预处理器符号中定义一个唯一的符号,并相应地包含相应的标题:

    #if defined(TARGET_ONE)
    #include "HeaderOne.h"
    #elif defined(TARGET_TWO)
    #include "HeaderTwo.h"
    #endif
    
        3
  •  0
  •   nikolovski    10 年前

    我很抱歉回答得太晚了几年,但我最近遇到了同样的问题,有一种方法可以做到:

    • 假设您已经通过复制原始目标创建了一个新目标。右键单击第一个(原始) .h 在项目导航器中打开文件,然后在查找工具中打开该文件。
    • 在Xcode中,右键单击该文件,然后将其从项目中删除(仅删除引用,不移动到垃圾箱)。
    • 在finder中,创建两个文件夹(在一个文件夹中不能有两个相同的命名文件),并移动/复制原始文件 h 把它们都归档。
    • 现在,将项目中的第一个文件夹拖放到某个位置,当目标窗口弹出时,只选择第一个目标。
    • 与第二个文件夹相同,只选择第二个目标。

    喂,你现在应该有两个相同的名字 h 文件夹。

    注意:如果您的 h 文件有一个 NS_ENUM . 这可能是可以解决的,但我仍然没有弄清楚。