特に次のように述べていますが、Xcodeを使用したiOSアプリの開発には少し興味があります。
#import <QuartzCore/QuartzCore.h>
私たちViewController.h
では、プロジェクトがリンクされている場合、QuartzCore
ライブラリは自動的にリンクされません。何故ですか?
特に次のように述べていますが、Xcodeを使用したiOSアプリの開発には少し興味があります。
#import <QuartzCore/QuartzCore.h>
私たちViewController.h
では、プロジェクトがリンクされている場合、QuartzCore
ライブラリは自動的にリンクされません。何故ですか?
ヘッダーのインポートは、ライブラリに対するリンクとはまったく関係がないためです。
ターゲットがリンクするリストライブラリにQuartzCoreFrameworkを追加する必要があります。
Xcodeがそれを自動的に行わないのはなぜですか?
インポートするヘッダーは、実際にはそのフレームワークの一部です。そのため、Xcodeはすべてのフレームワークをスキャンし、それらのヘッダーをチェックし、場合によっては接続されたライブラリを自動的にリンクする必要があります。これはOS関連のフレームワークでは確かに実行可能ですが、Xcodeがその場所を知らない限り、カスタムフレームワークではほぼ不可能です。アプリは、ヘッダーで定義された列挙型などを使用しているという理由だけで、実際にはライブラリに対してリンクしたくない場合があります。
Xcodeは、ベース3以外のライブラリを自動的に追加しません。リンクするだけでそれほど時間はかかりません。おそらく将来のバージョンで検出されるでしょうが、今のところ、ビルドフェーズに移動してそれらをリンクする必要があります。
重要なのは、Xcodeには、プロジェクトがQuartzCoreFrameworkにリンクする必要があることを知る方法がないということです。
#import <QuartzCore/QuartzCore.h>
QuartzCoreFrameworkが必要だと言うだけでは不十分です。という名前のヘッダーファイルを含む独自のライブラリを作成し、QuartzCore.h
という名前のフォルダの下に置くことができますQuartzCore
。インクルードファイルの検索パスに含まれている場合は、公式のQuartz Core Frameworkもプロジェクトに追加しない限り、使用しても問題ありません(競合が発生します)。
他の例があります。Visual Studioで.NETプロジェクトの名前空間をインポートしても、プロジェクトの「参照」にアセンブリが自動的に追加されることはありません。これは、同じ名前空間を持つ参照としてサードパーティのアセンブリを追加できるためです。公式の.NETFrameworkアセンブリの異なるバージョンを追加することもできます。