#ifdef #else #endif选择iOS sdk版本和功能?

时间:2013-08-23 15:31:39

标签: ios objective-c sdk ifdefine

我正在建造一个黑暗主题的iOS 6和7应用程序。我知道我可以致电[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];让iOS 7状态栏适合深色主题应用。

问题是我要将我的应用程序提交到App Store,目前Xcode 5尚未准备就绪,因此我必须使用Xcode 4.6.x来完成此任务。但是使用Xcode 4.6,我无法从iOS 7编译新方法。我想我必须做一些像“”如果ios7“”然后执行[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];并重新定位我的应用程序窗口。

我正在尝试使用#ifdef ... #else ... 此代码在[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];viewDidLoad

任何人都可以帮助理解如何在某些函数中使用#ifdef ...方法。

非常感谢!!!!

2 个答案:

答案 0 :(得分:20)

虽然我并非100%确定我可以在不违反保密协议的情况下完全回答这个问题,但我会尽力指出正确的方向。

您需要使用Availability.h中的__IPHONE_* #defines

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
  // iOS 6+ code here
#else
  // Pre iOS 6 code here
#endif

请注意,#if#ifdef将确定已编译的代码,它不是运行时检测机制。

您可以使用“快速打开”并输入“可用性”轻松访问Availability.h。

答案 1 :(得分:2)

看看respondsToSelector

 [delegate respondsToSelector:@selector(myMethod:)]