2009-12-01 13 views
13

Uygulamamda simülatör veya cihaz için geliştirdiğime göre koşullu olarak derlemenin bir yolu var mı? (Uygulamam harici bir sunucuya bağlanır: aygıtta çalışıyorsam, localhost'a bağlanmak istiyorum; aygıtta çalışıyorsam üretim sunucuma gitmek istiyorum.)Xcode iPhone projesinde, simülatör veya cihaz için inşa edip etmediğimi tespit edin.

Ben ' Aradığım bir #ifdef değişkeni arıyorum, hatta çalışma zamanında bile bir şey farketmez.

Teşekkürler.

cevap

18
#if !(TARGET_IPHONE_SIMULATOR) 

veya alternatif olarak, cihazda çalıştırıyorsanız

#if (TARGET_OS_IPHONE) 

söyleyecektir. Amacıyla size

#include "TargetConditionals.h"

dosya here bulabilirsiniz gerektiğini, çalışmak için.

+0

Teşekkürler ... o iş gibi görünüyor. "TargetConditionals.h" de başka neler tanımlandığını bulmak için herhangi bir yolu? Dosyayı herhangi bir yerde bulamıyorum ... –

+2

Düzeltme ... İkinci örneğiniz (TARGET_OS_IPHONE) elbette, iPhone'un geliştirilmesini sağladığınızdan, başarılı olur. İlk örneğiniz TARGET_IPHONE_SIMULATOR, aradığım şeydir ve bu yalnızca simülatörde (aygıtla) çalışıyorsanız başarılı olur. –

+0

Dosyaya bir bağlantıyla düzenlenir. – luvieere

1

Hangi parantez içinde gerçekleştirmek istediğiniz eylemleri belirleyebileceğiniz bir makro oluşturdum ve bu eylemler yalnızca aygıt simüle ediliyorsa gerçekleştirilecek.

#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;} 

Bu böyle kullanılır:

SIM(NSLog(@"This will only be logged if the device is simulated")); 
İlgili konular