0

インポートされたファイルを使用して、コンパイル時と実行時に実際に何が起こるかを理解しようとしています。

#import "file.h"ディレクティブは基本的に全体をコピーfile.mして現在のファイルに貼り付けますか? それとも、そのファイルの場所を指定して、インスタンス化するときに必要な属性を作成するだけですか?

4

2 に答える 2

2

インポートは、C、C++、および Objective C のプリプロセッサによって処理され、コンパイラ用に 1 つの大きなファイルが作成されます。すべての *.m、*.c、*.cpp ファイルはそれぞれすべてのインポートを取得します。

コマンド ラインで -E フラグを使用してコードをコンパイルすると、すべての #import が追加された後の結果を確認できます。

さらに、この質問では #include と #import について詳しく説明しているため、より多くの洞察が得られる可能性があります。

Objective-C の #import と #include の違いは何ですか?

想像できるように、余分なインポートがたくさんあると、コンパイルが遅くなります。Jetbrain の AppCode には、インポートを最適化する機能があります。

http://www.jetbrains.com/objc/features/

于 2013-04-28T04:41:15.687 に答える
1

ステートメントは本質的にfile.m#import file.h全体をコピーして現在のファイルに貼り付けますか?

  1. これはステートメントではなく、プリプロセッサ ディレクティブです。

  2. ファイル名を囲む引用符または山かっこがありません。

  3. #import "file.h" 実際file.h、このディレクティブの代わりにファイル全体を現在のファイルにコピーします。ただし、 では何もしませんfile.m

于 2013-04-28T03:52:28.503 に答える