Preprocessor and/or Macro way to check iOS SDK version?

HYC picture HYC · Aug 23, 2013 · Viewed 16.5k times · Source

I am buliding a dark themed iOS 6 and 7 app. I understand I can call [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; to make the iOS 7 status bar suit a dark color theme application.

The problem is I am going to submit my app to the App Store and currently Xcode 5 is not ready for that, so I have to use Xcode 4.6.x to do this task. However with Xcode 4.6, I am not able to compile the new method from iOS 7. I think I have to do something like ""if ios7"" then do [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; and reposition my application window.

I am trying to do this with #ifdef ... #else... this code is [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; inside the viewDidLoad.

Could anyone help to understand how to use #ifdef... with the method in some functions.

Thanks a lot!!!!

Answer

Steve Wilford picture Steve Wilford · Aug 23, 2013

While I'm not 100% sure I can fully answer this without breaching NDA, I'll do my best to point you in the right direction.

You need to use the __IPHONE_* #defines in Availability.h

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 && defined(__IPHONE_6_0)
  // iOS 6+ code here
#else
  // Pre iOS 6 code here
#endif

Please be aware that #if and #ifdef will determine what code is compiled, it is not a runtime detection mechanism.

You can easily access Availability.h by using Open Quickly and typing in Availability.