簡體   English   中英

如何為多個目標使用不同的.h文件?

[英]How can I use different .h files for several targets?

我有一個有幾個目標的項目。 對於我的大多數課程,我可以使用單個.h文件並更改.m文件中的詳細信息(為每個目標添加一個不同的.m文件)。

對於我的一個UIViewController子類,我需要為不同的目標聲明不同的UILabel IBOutlet (每個目標根據可用的內容顯示不同的標簽集)。 問題在於頭文件無法定位。 它們旁邊沒有復選框來指定目標成員身份。

我一直在處理的方法是為所有目標添加插座,而忽略未使用的插座。 這似乎並不理想。

我是否需要為此使用標題構建階段? 解決此問題的最佳方法是什么? 謝謝。

編輯:我應該已經提到過,我希望所有.h文件都具有相同的名稱: PlaceViewController.h

您可以使用預處理程序指令有選擇地包括頭文件。 例如

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

如果標題的名稱相同,則可以將不同的文件夾用於不同的目標:

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

您可以在此處閱讀更多關於條件 句的信息

標頭本身不會被編譯,而是包含在其他文件中,然后再進行編譯。 您可以在這些文件中使用條件編譯,以包括目標的正確標頭。 在每個目標的預處理器符號中定義一個唯一的符號,並相應地包含適當的標頭:

#if defined(TARGET_ONE)
#include "HeaderOne.h"
#elif defined(TARGET_TWO)
#include "HeaderTwo.h"
#endif

很抱歉回答幾年來太晚了,但是最近我遇到了同樣的問題,有一種解決方法:

  • 假設您已經通過復制原始目標創建了一個新目標。 右鍵單擊“項目瀏覽器”中的第一個(原始) .h文件,然后在Finder中打開該文件。
  • 在Xcode中,右鍵單擊該文件,然后將其從項目中刪除(僅刪除引用,不要移至回收站)。
  • 在Finder中,創建兩個文件夾(單個文件夾中不能有兩個同名文件),然后在兩個文件夾中移動/復制原始.h文件。
  • 現在,將第一個文件夾拖放到項目中的某個位置,然后在彈出帶有目標的窗口時,僅選擇第一個目標。
  • 與第二個文件夾相同,僅選擇第二個目標。

瞧,您現在應該有兩個同名的.h文件。

注意事項:如果您的.h文件具有NS_ENUM則Xcode似乎有隨機問題。 它可能可以解決,但我仍然沒有弄清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM