2011-06-06 7 views
0

私がThree20 Frameworkのような大きなフレームワークを使用している場合、 私はフレームワーク全体を#importするか、それとも#importするかを選択する必要があります。objective-c#完全なフレームワークをインポートするか、必要なファイルのみをインポートしますか?

フレームワークのすべてのファイルを開く必要があるため、コンパイルオーバーヘッドに違いがあると思いますが、実行時にも違いがありますか?より大きなメモリ使用量が好きですか?あるいは、コンパイラ最適化は、必要でないすべてのものをすでに削除していますか?

私が使っているすべてのクラスで同じフレームワークを使うのであれば、すべてのクラスではなくプレフィックスファイルにフレームワークを含めることをお勧めしますか?

挨拶 無限:)

答えて

2

コンパイルの違いがあります。はい:コンパイルにはすべて時間がかかります。しかし、実行時の違いはありません。

フレームワークをプレフィックスに含めるという考えは、全体を通して使用する予定のフレームワークに適しています。しかし、キャッチがあります。そのフレームワークで何かを変更した場合、コードベース全体を再コンパイルする必要があります。

+0

私は議論するつもりはありませんが、使用したくないクラスの代理メソッドを実装する必要はありませんか?いくつかのフレームワーククラスファイルには、その子クラスに実装されるデリゲートが含まれている場合がありますか? –

+0

*作成するオブジェクトのデリゲートメソッドのみを実装する必要があります。ヘッダーファイルをインポートするだけの場合は必要ありません。これは、我々がここで話している枠組み、確かに当てはまります。 – lxt

+0

うん正解。回答ありがとうございます :) –

1

実行時には、パフォーマンスのヒットはありません。どのクラスを使用しなくても、インポートするフレームワークやファイルの数にかかわらず、コンパイル時に結果のバイトコードに影響を与えません。コンパイラは何も最適化しません。使用されていないクラスは「まったくありません」まったくありません。

フレームワークが必要になると思われる場合は、プリコンパイル済みヘッダーファイルにフレームワークを含めます。

1

あなたが実際にクラスを使用しない限り、フットプリントは変わりませんが、必要なものだけを含めて私のヘッダーでもっと倹約したいと思っています。同じライブラリ(Three20など)からたくさんのものが必要な場合は、参照全体を追加できます。

プレフィックスに変更がほとんどないヘッダーだけをインクルードしますが、コンパイルが大幅に高速化されます。

関連する問題