#ifdef#else#endif选择iOS sdk版本和功能?
我正在构建一个黑色主题的iOS 6和iOS 7应用程序。我知道我可以调用#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”的事
[[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
方法可能更整洁。