C++ で使用されていないものは、まったくコンパイルされません。iPhoneでも同じですか?プログラムをコンパイルして、未使用のクラスやその他のものがある場合、それはコンパイルまたは無視されますか?
2 に答える
ビルド設定によって異なります。
ターゲット ビルド設定の下にある [リンク] の下に、[デッド コード ストリッピング] のオプションがあります。Xcode で作成されたプロジェクトのデフォルトは yes です。
Apple のビルド設定ドキュメントへのリンクを次に示します (抜粋あり)。
DEAD_CODE_STRIPPING (デッド コード ストリッピング)
説明: ブール値。
バイナリからデッド コードを削除するかどうかを指定します。
前提条件: $GCC_DEBUGGING_SYMBOLS = フル
値:
YES: 前提条件が満たされると、バイナリからデッド コードが削除されます。
NO: デッド コードはバイナリから削除されません。
デフォルト値: NO コンパニオン: 「GCC_DEBUGGING_SYMBOLS (デバッグ シンボルのレベル)」。前提条件: PRESERVE_DEAD_CODE_INITS_AND_TERMS
ドキュメントには値のデフォルトが NO であると書かれていますが、Xcode プロジェクト設定のデフォルト値は YES です。
ターゲットに追加されたリソースは、ビルド時にコンパイルおよび/またはアプリケーション バンドルにコピーされると思います。ビルド/コピーするファイルを編集するには、Xcode 4 でプロジェクトをクリックしてからターゲットをクリックして設定を変更できます。Build Phases の下で、必要に応じてファイルを変更できます。
スクリーンショットは次のとおりです。
Build Settings の下に Dead Code Stripping の設定もあります。これは次のようになります。
デフォルトは yes ですが、何らかの理由で無効にしたい場合は、そのようにします。