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

#ifdef#else#endif选择iOS sdk版本和功能?,ios,objective-c,sdk,ifdefine,Ios,Objective C,Sdk,Ifdefine,我正在构建一个黑色主题的iOS 6和iOS 7应用程序。我知道我可以调用[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]使iOS 7状态栏适合深色主题应用程序 问题是我要将我的应用提交到应用商店,而目前Xcode 5还没有准备好,所以我必须使用Xcode 4.6.x来完成这项任务。但是,对于Xcode 4.6,我无法从iOS 7编译新方法。我想我必须做一些类似于“if ios7”的事

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

问题是我要将我的应用提交到应用商店,而目前Xcode 5还没有准备好,所以我必须使用Xcode 4.6.x来完成这项任务。但是,对于Xcode 4.6,我无法从iOS 7编译新方法。我想我必须做一些类似于“if ios7”的事情,然后做
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]并重新定位我的应用程序窗口

我正试图用
#ifdef
来实现这一点<代码>#其他
。。。 此代码是
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]
viewDidLoad

有谁能帮助理解如何使用
#ifdef
。。。在某些函数中使用该方法


非常感谢

虽然我不能100%肯定我能在不违反保密协议的情况下完全回答这个问题,但我会尽我所能为您指出正确的方向

您需要使用Availability.h中的定义

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
  // iOS 6+ code here
#else
  // Pre iOS 6 code here
#endif
请注意,
#如果
#ifdef
将确定编译的代码是什么,则它不是运行时检测机制


通过快速打开并键入Availability,您可以轻松访问Availability.h。

查看respondsToSelector

 [delegate respondsToSelector:@selector(myMethod:)]

我只是在这里回答:我只是解决我的问题。感谢我的朋友,苹果不会接受任何低于5的xcode版本。所以试着使用xcode 5和更高版本。在你的答案中没有什么是保密协议所涵盖的。你为什么这么想?仅涵盖iOS 7特定的API。iOS 7 SDK中提供的Availability.h的内容是否包含在NDA中?无论如何,这个答案应该能够很容易地适应iOS 7,甚至不需要查看头文件。但我+1投了你的另一个答案:)这没用。编译器仍将在实际调用该方法的行上进行投诉。如果接收器类型为
id
,或者您使用
performSelector:withObject:
,则不会进行投诉。无论如何,上面的
#if
方法可能更整洁。