シミュレータと実機を区別するためのマクロ

CoreLocationをつかったアプリを書いていて面倒なのは、「シミュレータでは動かない」という点。ご存知かと思いますが、シミュレータ上でのCoreLocationは常にクパチーノのAppleの本社の緯度経度を返すようになっています。

世界全体をターゲットにしたアプリだったら、それでも簡単なテストくらいはできるかもしれませんが、日本限定のアプリの場合、かなり面倒なことになります。ちょっとした変更のたびにいちいちデバイスに転送するのは時間の無駄ですよね。そんなとき、「シミュレータで動いてるときだけは特定の緯度経度(例えば東京の自宅の位置)を決めうちで使う!」ことができないだろうか、といろいろ情報を探していて、みつけました。


マクロで対応できます。


シミュレータと実機を区別するためのマクロ



#import

#if (TARGET_IPHONE_SIMULATOR)
// シミュレータで動作している場合のコード
NSLog(@"Running on Simulator");

#else
// 実機で動作している場合のコード
NSLog(@"Running on Device");

#endif


簡単でしょ。TARGET_IPHONE_SIMULATORは、TargetConditionals.hで定義されているので、importするのを忘れずに!


参考: iphonedevforum.jpのポスト
http://iphonedevforum.jp/viewtopic.php?f=4&t=3