如何在Objective-C的实现文件中调用全局变量

如何在Objective-C的实现文件中调用全局变量,objective-c,Objective C,假设我想要一个BOOL来表示某物的状态。 然后我调用一个类方法,该类方法使用递归函数来构造某个字符串。 有没有办法将这个BOOL保持在类方法之外,这样它的状态就可以在递归之外更改? 我发现很难清楚地问这个问题,但我希望你们知道我想问的是什么:/就语言支持而言,可以在C中完成的任何事情都可以在Objective C中完成。所以,你们可能只想使用一个静态变量: static BOOL globalFlag 当然,如果您只想在递归方法中引用变量,如您想从方法的深层递归向调用方法发送标志,那么您可以更

假设我想要一个BOOL来表示某物的状态。 然后我调用一个类方法,该类方法使用递归函数来构造某个字符串。 有没有办法将这个BOOL保持在类方法之外,这样它的状态就可以在递归之外更改?
我发现很难清楚地问这个问题,但我希望你们知道我想问的是什么:/

就语言支持而言,可以在C中完成的任何事情都可以在Objective C中完成。所以,你们可能只想使用一个静态变量:

static BOOL globalFlag
当然,如果您只想在递归方法中引用变量,如您想从方法的深层递归向调用方法发送标志,那么您可以更好地通过引用传递变量:

- (void)someMethodWithRecursionFlag:(BOOL *)recursionFlag;
然后在需要时通过引用进行设置:

*recursionFlag = YES;
当你对它感兴趣的时候读它:

[self someMethodWithRecursionFlag:recursionFlag];
if (*recursionFlag)
    [self doSomethingInteresting];

有两种基本方法:


1) 对多个文件可见:

MONGlobalBOOL.h

extern BOOL MONGlobalBOOL;
MONGlobalBOOL.m

BOOL MONGlobalBOOL = NO;
static BOOL MONGlobalBOOL = NO;

2) 对一个文件可见:

MONGlobalBOOL.m

BOOL MONGlobalBOOL = NO;
static BOOL MONGlobalBOOL = NO;
您不希望在头文件中包含此项,因为这只会为每个转换发出变量的副本


使用中:

+ (void)method
{
  if (MONGlobalBOOL) {
    ...
  }
}


小心,全局可变数据经常会变成邪恶的东西。您可以通过在堆栈上创建一个局部变量来解决确切的问题。

您可以粘贴一些支持您的问题的代码吗??