How can I programmatically determine if my app is running in the iphone simulator? How can I programmatically determine if my app is running in the iphone simulator? xcode xcode

How can I programmatically determine if my app is running in the iphone simulator?


Already asked, but with a very different title.

What #defines are set up by Xcode when compiling for iPhone

I'll repeat my answer from there:

It's in the SDK docs under "Compiling source code conditionally"

The relevant definition is TARGET_OS_SIMULATOR, which is defined in /usr/include/TargetConditionals.h within the iOS framework. On earlier versions of the toolchain, you had to write:

#include "TargetConditionals.h"

but this is no longer necessary on the current (Xcode 6/iOS8) toolchain.

So, for example, if you want to check that you are running on device, you should do

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

depending on which is appropriate for your use-case.


Updated code:

This is purported to work officially.

#if TARGET_IPHONE_SIMULATORNSString *hello = @"Hello, iPhone simulator!";#elif TARGET_OS_IPHONENSString *hello = @"Hello, device!";#elseNSString *hello = @"Hello, unknown target!";#endif

Original post (since deprecated)

This code will tell you if you are running in a simulator.

#ifdef __i386__NSLog(@"Running in the simulator");#elseNSLog(@"Running on a device");#endif


Not pre-processor directive, but this was what I was looking for when i came to this question;

NSString *model = [[UIDevice currentDevice] model];if ([model isEqualToString:@"iPhone Simulator"]) {    //device is simulator}