Will this check work on the iPad as well as iPhone? I guess I am just confused about using the term “iPhone” on an iPad. Is there something else I need to check for iPad OS version or does the macro refer to the general iOS version.
#if __IPHONE_4_0
// Do stuff
#elif __IPHONE_3_0
// Do 3.0 stuff
#endif
The problem with
__IPHONE_3_0and the like is that they are defined even if targeting other iOS versions; they are version identification constants, not constants that identify the target iOS version. Use__IPHONE_OS_VERSION_MIN_REQUIREDor even:
to get around the bug mentioned in the comments for “How to target a specific iPhone version?”
__IPHONE_OS_VERSION_MAX_ALLOWEDmight also be of use, in limited circumstances.And, yes, it doesn’t matter what device the app will run on. These constants are defined by the compiler and don’t exist on the devices. Once the pre-processor runs, no macros are left. Though there are differences in the devices themselves, the iPhone and iPad both run iOS, and that’s what you’re really targetting.