アプリが iPhone シミュレーターで実行されているかどうかをプログラムで判断するにはどうすればよいですか? 質問する

アプリが iPhone シミュレーターで実行されているかどうかをプログラムで判断するにはどうすればよいですか? 質問する

質問にあるように、私は主に自分のコードがシミュレータで実行されているかどうかを知りたいのですが、実行中またはシミュレートされている特定の iPhone バージョンを知りたいとも思っています。

編集: 質問名に「プログラム的に」という単語を追加しました。私の質問のポイントは、実行中のバージョン/シミュレータに応じてコードを動的に含めたり除外したりできるようにすることです。そのため、この情報を提供できるプリプロセッサ ディレクティブのようなものを探しています。

ベストアンサー1

すでに質問されていますが、タイトルがまったく異なります。

iPhone用にコンパイルするときにXcodeによって設定される#defines

そこから私の答えを繰り返します:

SDKドキュメントの「条件付きソースコードのコンパイル」に記載されています。

関連する定義は TARGET_OS_SIMULATOR で、iOS フレームワーク内の /usr/include/TargetConditionals.h で定義されています。ツールチェーンの以前のバージョンでは、次のように記述する必要がありました。

#include "TargetConditionals.h"

ただし、現在の (Xcode 6/iOS8) ツールチェーンではこれは不要になりました。

たとえば、デバイス上で実行されているかどうかを確認したい場合は、次のようにします。

#if TARGET_OS_SIMULATOR
    // Simulator-specific code
#else
    // Device-specific code
#endif

どちらがユースケースに適しているかによって異なります。

おすすめ記事