2012-03-15 18 views
17

Powiel możliwe:
Programmatically detect if app is being run on device or simulatorJak wykrywać aplikacja jest uruchomiona na symulatorze lub urządzenia

jaki sposób można wykryć, czy moja aplikacja jest uruchomiona na symulatorze lub na urządzenia za pośrednictwem kodu.

+2

widziałem to? http://stackoverflow.com/questions/5775420/programmatically-detect-if-app-is-being-run-on-device-or-simulator – Vin

+1

duplikat tylu postów: http://stackoverflow.com/questions/ 5122149/iphone-simulator-how-to-detect-when-app-is-running-on-simulator-so-can-setup, http://stackoverflow.com/questions/5775420/programmatically-detect-if-app- is-being-run-on-device-or-simulator, http://stackoverflow.com/questions/458304/how-can-i-programmatically-determine-if-my-app-is-running-in-- iphone-simulato – Sarah

+1

@Fulvio przepraszam, jeśli zabrzmiało to ostro. To pytanie zostało wiele zapytane o SO. Czy przed opublikowaniem nie powinniśmy przeszukać już istniejącego postu, związanego z naszym pytaniem? – Vin

Odpowiedz

66

Należy pamiętać, że udostępnia już informacje o samym urządzeniu.

[[UIDevice currentDevice] model]

Można również użyć następujących:

TARGET_IPHONE_SIMULATOR informuje, czy jesteś w symulatorze iPhone.

TARGET_OS_IPHONE mówi, że pracujesz na iPhonie zamiast MacOS.

#if TARGET_IPHONE_SIMULATOR 

    NSLog(@"Running in Simulator - no app store or giro"); 

#else 

    NSLog(@"Running on the Device"); 

#endif 

i gdy tylko zainteresowany w urządzeniu

#if !(TARGET_IPHONE_SIMULATOR) 

    NSLog(@"Running on device"); 

#endif 
8

Można użyć tej stałej

#if TARGET_OS_SIMULATOR 
    NSLog(@"This is simulator mode...."); 
#else 
    NSLog(@"This is device mode...."); 
#endif 
1

samej aplikacji skompilowanej nie może prowadzony zarówno na symulatorze i urządzenia iOS ponieważ zestawy instrukcji CPU są zupełnie inne (x86 vs. ARM). (... chyba że budujesz jakieś dziwne super-uniwersalne binarne używając lipo)

Istnieje kilka sposobów, aby ustalić, czy aplikacja została skompilowana na x86 czy nie. Jedną z nich jest dodanie kodu czasu działania, który różni się w zależności od jednego z wielu wstępnie zdefiniowanych makr preprocesora kompilatora. Możesz uzyskać listę makr preprocesorów dla kompilatora x86, wpisując to w wierszu polecenia Terminal:

gcc -arch i386 -dM -E - </dev/null | sortować

Powiązane problemy