在编译期间检查设备版本(宏)

时间:2012-12-03 06:33:49

标签: objective-c ios6 ios-simulator

我知道这个话题可能是一个非常常见的问题,但我仍然无法得到解决方案。

首先,我知道有两种方法可以检查操作系统版本

1)

[[UIDevice currentDevice] systemVersion]

这绝对不是我正在寻找的东西,因为这是在运行时使用的,我正在看的是在编译期间可以做的事情。

2)

#if __IPHONE_6_0
// do something
#endif

这是我希望它可以工作的东西,但事实并非如此。这里有2个问题:

i)在iPhone模拟器5.0版上运行,我发现#if __IPHONE_6_0正在返回TRUE值。我认为只有当版本是6.0或更高版本时它才会为TRUE?

ii)当我在iPad模拟器上测试时,同样的事情发生了。这个宏也能在iPad上运行吗?

我希望在编译期间完成它的原因是因为我使用的是最新的iOS 6.0社交框架,但我希望我的应用程序也支持旧版本(分4.3)。问题是我的代码的一部分是使用社交框架的东西。因此,我必须进行宏检查,以了解此设备是否支持社交框架,如果不是,则不编译该特定社交框架的代码。如果我不这样做,我将在编译期间收到错误,因为低于版本6的操作系统不知道什么是社交框架。

期待在这里获得一些解决方案。

1 个答案:

答案 0 :(得分:0)

你不能为此目的使用宏,因为编译宏时使用你的版本,它不适用于其他设备(这似乎是显而易见的......)