VS から来た新しい MAc 開発者として、私はフレームワークが何であるかを実際に「理解」していません。プロジェクトにフレームワークを追加した場合、これは自動的にヘッダーが見つかることを意味します#include <SomeFile.h>
か?
場合によっては、ヘッダー検索パスも追加する必要があるようです。それは、フレームワークが正しく機能していないということですか?
Apple Conceptual Documentationで定義されているとおり:
フレームワークは、動的共有ライブラリ、nib ファイル、画像ファイル、ローカライズされた文字列、ヘッダー ファイル、リファレンス ドキュメントなどの共有リソースを 1 つのパッケージにカプセル化する階層ディレクトリです。
つまり、1 つまたは複数のアプリケーションで利用できるリソースをまとめたものであり、それ自体はアプリケーションではありません。
Apple Conceptual Documentationによる詳細:
#include
ディレクティブを使用して、コードにフレームワーク ヘッダー ファイルを含めます。Objective-C で作業している場合は、#import
ディレクティブの代わりにディレクティブを使用できます#include
。2 つのディレクティブの基本的な結果は同じです。ただし、#import
ディレクティブは、同じヘッダー ファイルが 2 回以上インクルードされないことを保証します。フレームワーク ヘッダーを含める方法は 2 つあります。#include <Framework_name/Header_filename.h> #import <Framework_name/Header_filename.h>
どちらの場合も、Framework_nameはフレームワークの名前で、 Header_filenameはそのフレームワークまたはそのサブフレームワークの 1 つのヘッダー ファイルの名前です。
フレームワーク ヘッダー ファイルをインクルードする場合、マスター フレームワーク ヘッダー ファイルのみをインクルードするのが伝統的です。マスター ヘッダー ファイルは、名前がフレームワークの名前と一致するヘッダー ファイルです。たとえば、Address Book フレームワークには、という名前のマスター ヘッダー ファイルがあります
AddressBook.h
。
カスタム フレームワークを含めるには:
プロジェクトが、標準の場所のいずれにも含まれていないフレームワークにリンクしている場合、Xcode がそのヘッダー ファイルを見つける前に、そのフレームワークの場所を明示的に指定する必要があります。このようなフレームワークの場所を指定するには、フレームワークを含むディレクトリをXcode プロジェクトの「フレームワーク検索パス」オプションに追加します。Xcode は、このディレクトリのリストをコンパイラとリンカーに渡します。どちらもこのリストを使用して、フレームワーク リソースを検索します。
フレームワークが適切に作成されている場合、ヘッダーと実際のリンク可能な (バイナリ) ファイルが含まれています。コンパイラ (以前は GCC、最近は LLVM-clang) はフレームワーク パスを認識し、フレームワーク ヘッダーを検索する場所を自動的に認識します。ただし、いくつかのまれなケースがあります。
これが役立つことを願っています。