Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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!!!!

like image 339
HYC Avatar asked Aug 23 '13 15:08

HYC


2 Answers

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.

like image 179
Steve Wilford Avatar answered Sep 25 '22 13:09

Steve Wilford


take a look to respondsToSelector

 [delegate respondsToSelector:@selector(myMethod:)]
like image 38
p1ckl3 Avatar answered Sep 25 '22 13:09

p1ckl3