Objective-Cにヘッダーファイルを(実際には#importを呼び出す)費用はいくらですか?
これらのファイルを不必要に読み込むためにコンパイラが使い果たされることがあります。 #import
が編集されると、追加のファイルを各翻訳(たとえば.m
ファイル)ごとに解析、コンパイルなどして表示する必要があります。これにより、ビルドとリンク時間が大幅に長くなります。 10倍長くなるのはではなく、である。
さまざまな場所に常に同じヘッダーを含めることに飽きてしまったので、いくつかのよく参照されるヘッダーを含むGlobalReferences.hファイルを作成することにしました。
通常、これは非常に悪いアプローチです。一般的な問題は、GlobalReferences.hに含まれるファイルが変更されたときは、プロジェクト全体と依存関係を再構築、再リンクなどする必要があることです。
このような相互依存性が存在する小さなライブラリやパッケージ(たとえば、StoreKit.frameworkは小さなパッケージ/ライブラリ)に分割するのが望ましいですが、ヘッダーのライブラリ/フレームワーク/パッケージを詰め込むことで何も解決できません。また、前方宣言とクラス継続または@implementation
にデータを格納すると、必要な変換のみにライブラリ/ヘッダーを含めることができるため、依存関係を大幅に減らすことができます。
最後に、レイジーインクルード後のクリーンアップは非常に時間がかかります。特にプロジェクトのビルド時間が耐え難いほど遅くなるまで待っています。基本的には、不要な依存関係を取り除き、再構築し、繰り返す必要があります(数日間)。
他のファイルが使用されていない場合は、他のファイルへの参照を含めるとかなりの費用がかかりますか?
絶対に。プロジェクトが大きくなればなるほど、悪い怠惰な包含物になります。大規模なプロジェクトでは、コンパイルされたファイルのほとんどに数十〜数十万行の行が追加され、多くのソースを頻繁に再コンパイルする可能性があります。これはビルドプロセスにかなりの複雑さを追加します.CPUの要求が上がり、RAMの使用率が上がり、ディスクIOが上昇します。また、コードベース/プロジェクトの複雑さが増すにつれて、これが大きな問題になります。
これをクリアしていただきありがとうございます。 – LucasTizma