0

この質問はばかげているように見えるかもしれませんが、私はこの質問をすることを躊躇しないかどうかはわかりません。もう1つのヘッダーファイルにヘッダーファイルをインクルードします。これは良い習慣ですか。通常、私はそれが良いアプローチではないと思います。場合によっては、ヘッダーファイルを含める必要がありました。

eg: @property (strong, nonatomic) AVAudioPlayer *audio_player;

このようなプロパティがあると考えてください。対応するヘッダーファイルを.mmファイルにインクルードすると、Xcodeは.hファイルに宣言されていないエラーを表示するため、ここではヘッダーファイルを.hファイル自体にインクルードする必要があります。このため、このクラスを含める場合は常に、オーディオプレーヤーヘッダーファイルも間接的にインクルードしますが、そのクラスでは必要ない場合があります。どうすればこれを回避できますか。または私はこのように進むことができます...?提案を提供してください。

4

3 に答える 3

4

他のヘッダー ファイルからヘッダー ファイルをインクルードすることは非常に一般的です。

C および C++ の場合、#ifdef #endif複数の宣言を避けるために、ヘッダー コンテンツをブロックにラップするのが一般的です (標準ライブラリのヘッダーを含む一般的な c/c++ ヘッダーを見てください)。

Objective-C では、Objective C の代わりに#ifdef #endif一般的に使用するため、ブラケットは通常必要ありません。また、ファイルのインポートは、何回実行されても 1 回だけ実行されることが保証されています。importinclude

于 2012-09-18T05:17:03.390 に答える
1

これを避ける必要はありません。それは完全に合法的で慣用的です。

この背後にあるロジックは、別のクラスからクラスのインスタンスのプロパティにアクセスしたい場合がaudio_playerあり、これを行わなかった場合、プロパティの型は宣言されていないということです。

于 2012-09-18T05:10:21.530 に答える
0

特に、影響を受ける .m ファイルの数が、変更された .h ファイルの数が直線的に増加するたびに幾何学的に増加するように見える大規模なプロジェクトでは、ヘッダー ファイルが変更されたときにコンパイル時間が短縮されるため、前方宣言が優先されることがわかりました。

前方宣言はコードの再利用も促進します。なぜなら、プロジェクトを 2 つの別々のプロジェクトに分割しようとすると、便利な場所にインポートを投げ込むだけで「節約」された時間が、今すぐに必要なという事実によって相殺されることがわかるからです。インポートを追加/削除して、新しいプログラム構造を反映します。前方宣言を使用すると、リンケージがより明確になり、メンテナンスが最小限に抑えられます。基本的に過剰な #import は不要な結合を助長します。

于 2012-09-27T08:09:56.480 に答える