3

Objective-C で記述されたフレームワークを作成していますが、フレームワーク ターゲットを別のプロジェクトにリンクしようとしたときに問題が発生しました。この最後のプロジェクトをコンパイルすると、Xcode にエラーが表示されます'AFHTTPClient.h' file not found

私のプロジェクトはこのように構成されています。自分で書いたヘッダーは公開され、使用しているライブラリのヘッダーはプロジェクトの可視性にあるため、開発者は不要なファイルで汚染されません。

ヘッダーの可視性

JPImgurKit.hファイルは、ファイルをインポートして失敗するファイルJPImgurClient.h(および他のファイル)をインポートしますAFHTTPClient.h...この最後のファイルをパブリックセクションに配置すると、(別のプライベートファイルがインポートされるまで)機能しますが、これを避けたいですそれは可能ですか?

4

1 に答える 1

6

パブリック ヘッダーは、プライベート ヘッダーをインポートしてはなりません。パブリック ヘッダーには、プライベート データ構造に依存するものは何もないはずです。呼び出し元がプライベート データ構造について知る必要がある場合、それはプライベートではありません。呼び出し元がプライベート データ構造について知る必要がない場合、それをパブリック ヘッダーに含める理由はありません。特定のヘッダーに関する詳細を提供する必要があります (のどの部分AFHTTPClientが含まれていJPImgrClientますか?)

とはいえ、AFNetworking のような共通ライブラリを個人的に含めるべきではありません。それを必要とする他のフレームワークがあるかもしれません (メインプログラムを含む)。非公開で含めると衝突が発生し、最終開発者が解決するのが非常に困難になります。パッケージに AFNetworking を含める必要があることをユーザーに知らせる必要があります。ユーザーに多くの頭痛の種を与えずに、この実装の詳細を簡単に隠すことはできません。

于 2013-07-19T19:51:16.567 に答える