在iOS应用程序中放置全局宏/函数的位置

时间:2013-06-29 01:34:04

标签: ios objective-c

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

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

#define IS_OLDER_THAN_SIX (MajorVersionInstalled() < 6)

这个想法是你可以在整个项目中使用宏进行条件检查。我想使用这个想法,但我有点困惑,因为它使用了c函数,我不知道在哪里定义它:

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

1 个答案:

答案 0 :(得分:5)

  

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

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

  

函数实现是否在同一个地方?

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

 NSUInteger MajorVersionInstalled();

属于头文件和定义:

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

属于*.m个文件。

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

使用pch,标题中的定义以及遍布各处的基础通常会降低构建速度并创建更大的二进制文件。在小型项目中很难检测到这一点,但很快就会成为大型代码和库中的一个问题。