2

在我看过的一些苹果文档中,他们建议使用宏来检查当前安装的 iOS 版本,该版本可以在您的项目中使用。它看起来像这样:

NSUInteger MajorVersionInstalled();
NSUInteger MajorVersionInstalled() {
   // Call objective-c methods and return NSUInteger
}

#define IS_OLDER_THAN_SIX (MajorVersionInstalled() < 6)

这个想法是您可以在整个项目的条件检查中使用宏。我想使用这个想法,但我有点困惑,因为它使用 ac 函数,我不确定在哪里定义它:

  • 我应该使用一个地方来定义它以在我的项目中使用(Prefix.pch ??)。
  • 功能实现是否在同一个地方?
4

1 回答 1

5

我应该使用一个地方来定义它以在我的项目中使用(Prefix.pch ??)。

PCH不是个好地方。最好在需要的地方放置一个单独的标题,#import因为这个声明很可能不需要在任何地方都可见。注意: using 的含义NSUInteger也是该函数仅在 objc 源中可用。

功能实现是否在同一个地方?

除非您有非常特殊的需要,否则声明:

 NSUInteger MajorVersionInstalled();

属于头文件和定义:

 NSUInteger MajorVersionInstalled() {
    // Call objective-c methods and return NSUInteger
 }

属于一个*.m文件。

一旦你这样做了,你还可以创建一个函数来摆脱#define IS_OLDER_THAN_SIX (MajorVersionInstalled() < 6).

使用 pch、标头中的定义和任何地方的基础通常会减慢您的构建速度并可能创建更大的二进制文件。在小型项目中很难检测到这一点,但在大型代码和库中很快就会成为一个问题。

于 2013-06-29T01:46:10.687 回答