0

如果我使用当前 SDK 版本不推荐使用的功能,编译器会发出警告。我正在寻找与之相反的功能。

如果我使用特定 SDK 版本中未定义的类或方法,编译器会发出警告。

我怎样才能获得这个功能?我尝试__IPHONE_OS_VERSION_MAX_ALLOWED通过将定义放在前缀标题上来定义,

#undef      __IPHONE_OS_VERSION_MAX_ALLOWED
#define     __IPHONE_OS_VERSION_MAX_ALLOWED         40000

但即使在 SDK 本身中,它也会捕获任何版本不匹配。(如UIKit

我正在使库代码需要向后兼容 iOS 4.0,并且我想要一些自动化的方法来检查向后兼容性。我知道功能可用性测试不会解决所有问题,但这会使工作变得容易得多。

如何使用编译器检查特定 SDK 版本的功能可用性?

4

2 回答 2

0

我认为您需要在尝试使用 NSClassFromString 之前检查一个类(功能)。

Class myClass = NSClassFromString(@"CLassThatYouWantToUse"); //get the class object
if (myClass != nil)
    {
       // The device will support this class.. so carry on...
     }
else
      {
           // The device doesn't support this class.
       }
于 2012-04-19T07:42:26.523 回答
0

这听起来像是一项工作respondsToSelector,您可以在其中检查选择器是否存在于您当前运行的操作系统中。

但是,如果您真的想使您的应用程序适应未来,您应该始终使用为您想要支持的最低操作系统版本定义的最新 API。

这是一个有关“respondsToSelector”的相关问题,可能会对您有所帮助

于 2012-04-19T06:59:00.873 回答