假设我想要一个 BOOL 来指示某物的状态。然后我调用一个使用递归函数构造某个字符串的类方法。无论如何要将此 BOOL 保留在类方法之外,以便它的状态可以在递归之外更改?我很难清楚地问这个问题,但我希望你们知道我想问什么:/
问问题
174 次
2 回答
2
有两种原始方法:
1)对多个文件可见:
MONGlobalBOOL.h
extern BOOL MONGlobalBOOL;
MONGlobalBOOL.m
BOOL MONGlobalBOOL = NO;
2)对一个文件可见:
MONGlobalBOOL.m
static BOOL MONGlobalBOOL = NO;
您不希望在标题中使用它,因为这只会为每次翻译发出变量的副本。
正在使用:
+ (void)method
{
if (MONGlobalBOOL) {
...
}
}
谨慎的全局可变数据经常衰减为邪恶的东西。您可以通过在堆栈上创建局部变量来解决您的确切问题。
于 2012-04-11T06:37:22.340 回答
1
就语言支持而言,可以在 C 中完成的任何事情都可以在 Objective C 中完成。所以您可能只想使用静态变量:
static BOOL globalFlag
当然,如果您只想在递归方法中引用变量,例如您想从方法的更深层次递归中向调用方法发送标志,那么您可能会更好地通过引用传递变量:
- (void)someMethodWithRecursionFlag:(BOOL *)recursionFlag;
然后在需要时通过引用进行设置:
*recursionFlag = YES;
并在您感兴趣时阅读它:
[self someMethodWithRecursionFlag:recursionFlag];
if (*recursionFlag)
[self doSomethingInteresting];
于 2012-04-11T06:18:43.547 回答