可能重复:
Global Variables in Cocoa/Objective-C?
problem with declare a global variable in objective c
我在.h中定义了一个全局变量,其他类通过包含类“.h”文件来访问。这很好,从我收到的建议,我现在已经将变量移动到“.m”,因为我被告知,否则每个包含.h的类都将重新声明它,这是正确的吗?但现在我的其他文件无法访问它,我假设我不应该包含“.m”文件....我应该使用#define预处理器,所以只定义一次?我该怎么做?
答案 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)
静态变量只声明一次