#ifdef #else #endif choose iOS sdk version and function?

只愿长相守 提交于 2019-12-19 03:15:16

问题


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


回答1:


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
  // 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.




回答2:


take a look to respondsToSelector

 [delegate respondsToSelector:@selector(myMethod:)]


来源:https://stackoverflow.com/questions/18406622/ifdef-else-endif-choose-ios-sdk-version-and-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!