是否可以显式定义在Xcode中给出反对警告的SDK?

是否可以显式定义在Xcode中给出反对警告的SDK?,xcode,warnings,Xcode,Warnings,我有一大堆的源代码,用于一个有许多不同应用目标的项目中。有些目标的部署目标为iOS 5.0,有些目标的部署目标为iOS 6.0。在构建6.0目标时,对于在6.0之前已弃用的方法,我会收到大量弃用警告。这些方法中的大多数都有iOS 6.0中引入的替换方法,因此我不能将这些替换方法用于针对5.0的代码。虽然我可以使用以下两种生成设置关闭所有弃用警告: GCC\u警告\u关于\u不推荐的\u函数=否 CLANG_WARN_已弃用_OBJC_实现=否 我宁愿不完全关掉它们。相反,我希望能够显式地告诉编译

我有一大堆的源代码,用于一个有许多不同应用目标的项目中。有些目标的部署目标为iOS 5.0,有些目标的部署目标为iOS 6.0。在构建6.0目标时,对于在6.0之前已弃用的方法,我会收到大量弃用警告。这些方法中的大多数都有iOS 6.0中引入的替换方法,因此我不能将这些替换方法用于针对5.0的代码。虽然我可以使用以下两种生成设置关闭所有弃用警告:

GCC\u警告\u关于\u不推荐的\u函数=否 CLANG_WARN_已弃用_OBJC_实现=否


我宁愿不完全关掉它们。相反,我希望能够显式地告诉编译器检查iOS 5.0中不推荐的任何内容。这可能吗?是否有人能很好地解决此问题?

您可以使用
#pragma-clang-diagnostic
使代码块的特定警告静音。例如:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

// Stuff that uses deprecated methods

#pragma clang diagnostic pop

编译器不知道方法。它只知道标题上说它已弃用。您可以围绕这些方法进行包装,并在每个SDK上做正确的事情(或者只是在一个地方超越警告)。或者您可以尝试为共享代码构建一个静态库,并根据旧的SDK构建它(这应该可以工作,但您可能需要仔细测试)。共享静态库是我所知道的唯一解决方案,可以解决这个问题,但不幸的是,这个项目已经有一个相当复杂的静态库依赖关系纠结,我不想为了解决这个特殊的问题而把事情搞得一团糟。