1

重複の可能性:
@class vs. #import
Cocoa: ヘッダーでのインポートとメイン ファイルでのインポートの違いは何ですか?

インターフェイス ファイルにヘッダー ファイルをインポートすることと、インターフェイス ファイルで @class を使用することの違いは何ですか? そして、インターフェイス ファイルにヘッダー ファイルをインポートすると、そのクラスのインスタンスを直接作成できることがわかりました。ヘッダーファイルをインポートするのとは逆に、インターフェイスファイルで @class を使用し、実装ファイルでヘッダーをインポートするようなものがありますか? 誰かがこれに光を当てることができますか?

4

2 に答える 2

9

@class は単純にクラスを参照しますが、 import はクラスのメソッドとその実装を含むクラスへの強力なバインディングを持ちます。@class は、循環性または閉ループを回避するためにも使用されます。@class ディレクティブは、クラスが存在しますが、実行時にコンパイラが知ることができるように、インポートがクラスの各メンバーを参照している間、クラスについてそれ以上何も伝えません。

于 2012-05-14T10:02:08.133 に答える
1

前方宣言を使用し、実装ファイルのみに依存するヘッダーをインポートすることがベストプラクティスです。ヘッダーファイルにインポートすると、コンパイラの依存関係が構築されます。ahをbhにインポートし、次にbhをchにインポートするとします。ahで何かを変更すると、依存関係が変更されたため、コンパイラもcmを再コンパイルする必要があります。

たとえば、プリコンパイル済みヘッダーファイル(.pch)に#defineまたは#importを追加すると、すべてのファイルを再コンパイルする必要があります。

Objective-Cには複数のインポートに対するガードがあり(#includeと比較)、同じヘッダーファイルの複数のインポートをチェックする必要はありません。

于 2012-05-14T10:04:33.737 に答える