在下面的代码中,我在UIColor上创建一个类别来创建随机颜色.但是,从这段代码中,我会认为每次运行方法时'if'条件都是真的,而不仅仅是第一次.
我想我并没有真正理解静态变量.静态变量是否只设置一次,然后第二次运行该方法时,该行只是被忽略了?(第一次运行后种子会永远为是)?
@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];
}
Run Code Online (Sandbox Code Playgroud)
cob*_*bal 15
你是正确的,静态变量只设置一次.
代码
static BOOL seeded = NO;
Run Code Online (Sandbox Code Playgroud)
是不是等同于
static BOOL seeded;
seeded = NO;
Run Code Online (Sandbox Code Playgroud)
第二个将总是评估为NO,而第一个将评估为NO,直到设置不同.
| 归档时间: |
|
| 查看次数: |
12141 次 |
| 最近记录: |