如何在Objective-C的实现文件中调用全局变量
假设我想要一个BOOL来表示某物的状态。 然后我调用一个类方法,该类方法使用递归函数来构造某个字符串。 有没有办法将这个BOOL保持在类方法之外,这样它的状态就可以在递归之外更改?如何在Objective-C的实现文件中调用全局变量,objective-c,Objective C,假设我想要一个BOOL来表示某物的状态。 然后我调用一个类方法,该类方法使用递归函数来构造某个字符串。 有没有办法将这个BOOL保持在类方法之外,这样它的状态就可以在递归之外更改? 我发现很难清楚地问这个问题,但我希望你们知道我想问的是什么:/就语言支持而言,可以在C中完成的任何事情都可以在Objective C中完成。所以,你们可能只想使用一个静态变量: static BOOL globalFlag 当然,如果您只想在递归方法中引用变量,如您想从方法的深层递归向调用方法发送标志,那么您可以更
我发现很难清楚地问这个问题,但我希望你们知道我想问的是什么:/就语言支持而言,可以在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) {
...
}
}
小心,全局可变数据经常会变成邪恶的东西。您可以通过在堆栈上创建一个局部变量来解决确切的问题。您可以粘贴一些支持您的问题的代码吗??