gpt4 book ai didi

objective-c - Objective-C 中的静态 BOOL

转载 作者:行者123 更新时间:2023-12-01 06:57:38 26 4
gpt4 key购买 nike

在下面的代码中,我在 UIColor 上创建一个类别来创建随机颜色。但是,从这段代码中,我会认为“if”条件在每次运行该方法时都为真,而不仅仅是第一次。

我想我并没有真正正确理解静态变量。静态变量是否只设置一次,然后第二次运行该方法时,该行会被忽略吗? (所以在第一次运行后播种将永远是 YES)?

@interface UIColor(Random)
+(UIColor *)randomColor
{
static BOOL seeded = NO;
if (!seeded)
{
seeded = YES;
srandom(time(NULL));
}
CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0f];
}

最佳答案

您是正确的,静态变量只设置一次。

编码

static BOOL seeded = NO;

不是 相当于
static BOOL seeded;
seeded = NO;

第二个将始终评估为 NO,而第一个将评估为 NO,直到设置不同。

关于objective-c - Objective-C 中的静态 BOOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/707460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com