11

ターゲットが 1 つしかない Xcode 4.6.2 で iPhone アプリを開発していますが、いくつかの重要なファイルがターゲットのメンバーではないことに気付きました。カスタム ヘッダー ファイルはターゲット メンバーシップの一部ではなく、Info.plist、Prefix ヘッダー、または製品 "MyApp.app" も含まれていません。

私がターゲットを理解している方法では、これらのファイルは確かにターゲットのメンバーである必要があります。

私の質問は、これらのファイルが私のターゲットのメンバーではないのはなぜですか?

SO を検索した後、同様の質問からある程度の洞察が得られましたが、その質問に対する完全な回答ではありません。私が集めた洞察は次のとおりです。

  1. ヘッダー ファイルは、"ヘッダーのコピー" ビルド フェーズでリンクされるため、ターゲットのメンバーではありません。

    • これは合理的に聞こえますが、ヘッダーのコピー ビルド フェーズがありません。
  2. Info.plist は「バンドル リソースのコピー」ビルド フェーズでリンクされ、Info.plist にはプレフィックス ヘッダー (Prefix. pch)

    • これが実際にどのように機能するかは確信が持てません
4

3 に答える 3

17

ヘッダー ファイルは、他のソース ファイルが参照するものであり、クラスのインターフェイスが何であるかを認識します。それらはバイナリ自体の一部としては必要ないため、最終製品に含める必要はありません。

Info.plistは、アプリケーション バンドル自体を定義する特殊なケースであるため、個別に処理されます。

一般的に言えば、次の場合、ファイルをターゲットのメンバーにする必要があります。

  • 実行可能ファイルの一部 (例: 実装 ( .m) ファイルまたはライブラリ)、または
  • アプリケーション バンドルにファイルとして含まれます (画像など)。

ファイルがビルド プロセスの一部としてのみ使用され、実行時に必要ない場合は、ファイルをターゲットのメンバーにする必要はありません。通常、これは、プリコンパイル済みヘッダー ( ) を含む、任意のタイプのヘッダー ファイルです.pch

于 2013-08-07T22:02:45.703 に答える