As the question states, I would mainly like to know whether or not my code is running in the simulator, but would also be interested in knowing the specific iphone version that is running or being simulated.
EDIT: I added the word 'programmatically' to the question name. The point of my question is to be able to dynamically include / exclude code depending on which version / simulator is running, so I'd really be looking for something like a pre-processor directive that can provide me this info.
Already asked, but with a very different title.
I'll repeat my answer from there:
It's in the SDK docs under "Compiling source code conditionally"
The relevant definitions are TARGET_OS_IPHONE and TARGET_OS_SIMULATOR, which are defined in /usr/include/TargetConditionals.h within the iOS framework. On earlier versions of the toolchain, you had to write:
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
depending on which is appropriate for your use-case.