是否有#define,你在iPhone SDK中为哪些活动SDK编译?

时间:2009-11-19 10:47:22

标签: iphone

我希望能够在编译时告诉我是否正在编译iPhone SDK 2.x或3.x,所以如果需要,我可以省略一些比特(例如MapKit,GameKit)。目前我正在使用自定义#define。我想知道是否有办法从活动SDK自动检测到这个?我知道TARGET_OS_IPHONE和TARGET_IPHONE_SIMULATOR以及TargetConditionals.h,但找不到与活动SDK相关的任何内容。

3 个答案:

答案 0 :(得分:3)

查看Availability.h(和AvailabilityInternal.h)。这里定义了__IPHONE_OS_VERSION_MIN_REQUIRED以及SDK版本的常量。

答案 1 :(得分:1)

Martijn是正确的:__ IPHONE_OS_VERSION_MIN_REQUIRED是部署目标。当前的基本SDK是__IPHONE_OS_VERSION_MAX_REQUIRED。

如果您正在尝试使用它来确定运行代码的设备上可用的功能,但是您无法使用编译时宏来执行此操作,则需要使用运行时功能检测。 / p>

答案 2 :(得分:-1)

如果您想检查是否使用了特定(或更高版本)的SDK版本,可以检查一些定义。

例如,如果你只有在使用iOS 6.0或更高版本的SDK时才想编译一些代码,你可以使用它:

#ifdef __IPHONE_6_0
    // Some iOS 6 code
#endif