26

Xcode の「ヘッダーのコピー」フェーズで、「プロジェクト」セクションと「プライベート」セクションのヘッダーの違いは何ですか? それぞれいつ使いたいですか?

また、パブリック ヘッダーをコピーする理由 (たとえば、静的ライブラリの場合) も理解できますが、プライベート ヘッダーをコピーする理由は何ですか?

編集:以下の @mipadi は、パブリック部分とプライベート部分の役割を説明しています。ただし、「プロジェクト」部分にヘッダーを含めることと、「ヘッダーのコピー」フェーズのどの部分にもヘッダーを持たないことの違いがまだわかりません。

4

4 に答える 4

16

パブリック ヘッダーにプライベート ヘッダーが含まれている場合は、プライベート ヘッダーをコピーする必要がありますが、ライブラリまたはフレームワークのコンシューマーがそれらのプライベート ヘッダーがパブリック API の一部ではないことを認識していることを確認する必要があります。

「プロジェクト」ヘッダーは、パブリック ヘッダーに含まれないプライベート ヘッダーです (通常、これらは内部実装の一部であるため、実装 (.cまたは.m-- ファイル) にのみ含まれます)。

フレームワークを構築するとき、パブリック ヘッダーはHeadersフレームワークのディレクトリにコピーされますが、プライベート ヘッダーはPrivateHeadersディレクトリにコピーされます。

于 2012-05-14T16:35:03.880 に答える
6

@Danra、ヘッダーを「プロジェクト」の下に置くと、それらのヘッダーは、ヘッダーの実際の場所に関係なく、実装に表示されます。

次のようなフォルダー構造があるとしましょう: /Sources/libAF/AFSomething.h /Sources/libAF/AFSomething.m /Sources/exec/main.m

"Project" の下に 'AFSomething.h' を配置した場合、次のように main.m で使用できます: #import "AFSomething.h"

簡単に言えば、実際のパス情報を省略しても、Xcode には Project ヘッダーが含まれます。

于 2013-06-28T14:43:16.413 に答える
0

ヘッダーファイルの可視性の設定から:

  • パブリック: インターフェースは最終化されており、製品のクライアントによって使用されることを意図しています。パブリック ヘッダーは、制限なく読み取り可能なソース コードとして製品に含まれています。

  • 非公開: インターフェイスはクライアント向けではないか、開発の初期段階にあります。製品にはプライベート ヘッダーが含まれていますが、「プライベート」とマークされています。したがって、シンボルはすべてのクライアントに表示されますが、クライアントはそれらを使用しないことを理解する必要があります。

  • プロジェクト: このインターフェイスは、現在のプロジェクトの実装ファイルでのみ使用されます。プロジェクト ヘッダーは、オブジェクト コードを除き、ターゲットには含まれません。シンボルはクライアントにはまったく表示されず、自分だけに表示されます。

于 2012-05-26T03:37:02.830 に答える
0

これに加えて、通常、人々はプライベートヘッダーを「クリーン」にするスクリプトを持っているため、パブリックキャノンはシンボルが何であるかを見ることができません。デバッグ/開発目的では、プライベート ヘッダーをそのままにしておくと、開発およびデバッグ段階で役立ちます。

于 2013-09-20T06:41:47.753 に答える