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

Objective c 目标c从另一个文件访问全局变量,objective-c,Objective C,可能重复: 我在.h中定义了一个全局变量,其他类通过包含class.h文件来访问它。这很好,根据我收到的建议,我现在将变量移到了“.m”,因为我被告知,否则每个包含.h的类都将重新定义它,对吗?但是现在我的其他文件无法访问它,我假设我不应该包含“.m”文件。。。。我是否应该使用#define预处理器,以便只定义一次?如何执行此操作?您可以在.h内使用#define number 123或#define string@“abc”,导入该文件的任何文件都应该能够使用您选择的预处理器名称。k是这些

可能重复:

我在.h中定义了一个全局变量,其他类通过包含class.h文件来访问它。这很好,根据我收到的建议,我现在将变量移到了“.m”,因为我被告知,否则每个包含.h的类都将重新定义它,对吗?但是现在我的其他文件无法访问它,我假设我不应该包含“.m”文件。。。。我是否应该使用#define预处理器,以便只定义一次?如何执行此操作?

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


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

静态变量只声明一次

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

globals.h:

extern int myGlob;
不能在
.h
中定义变量,必须在
.c
.m
中定义变量:

globals.m:

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

myApp.m:

#import "globals.h"

main() {
    myGlob++;
}

我知道你最初需要的信息;声明相同的变量,在头中使用
extern
,在.m文件中不使用限定符。感谢Josh:)很抱歉,遗漏了这一点。这些不是变量;它们只是文本替换。这个答案并不能解决Baconbeastnz的问题。我从来没有说过它们是变量,我将编辑我的答案来澄清这一点。答案确实涵盖了他问的使用#define语句跨文件定义某个内容是否合适的部分。您的回答是“应该能够使用变量名”。Baconbeastnz正在询问一个全局变量,该变量出现在今天的几个(,)问题中。根据问题更改我的答案,并进行必要的澄清。我将略过其他问题,然后决定是否可以更好地回答这个问题,但是#define方法是一种有效的方法,可以完成@Baconbeastnz在这个特定问题的部分内容。