目标c从另一个文件访问全局变量

时间:2012-06-13 06:21:10

标签: objective-c

  

可能重复:
  Global Variables in Cocoa/Objective-C?
  problem with declare a global variable in objective c

我在.h中定义了一个全局变量,其他类通过包含类“.h”文件来访问。这很好,从我收到的建议,我现在已经将变量移动到“.m”,因为我被告知,否则每个包含.h的类都将重新声明它,这是正确的吗?但现在我的其他文件无法访问它,我假设我不应该包含“.m”文件....我应该使用#define预处理器,所以只定义一次?我该怎么做?

3 个答案:

答案 0 :(得分:5)

您可以在.h个文件中声明变量。

globals.h:

extern int myGlob;

您无法在.h中定义变量,您必须在.c.m中定义:

globals.m:

int myGlob;

您可以从需要访问globals.h的任何其他文件中导入myGlob

myApp.m:

#import "globals.h"

main() {
    myGlob++;
}

答案 1 :(得分:2)

您可以在.h中使用#define number 123#define string @"abc",任何导入它的文件都应该能够使用您选择的预处理器名称。 k是这些类型宏的通用前缀,因为它们实际上是常量值。

注意:注释显示使用您定义的预处理器和实际的全局变量(使用extern声明)之间存在差异,尽管两者都可以通过导入.h文件在单独的文件中使用声明/定义它们。

答案 2 :(得分:-1)

静态变量只声明一次