【发布时间】:2009-04-01 21:45:06
【问题描述】:
在下面的代码中,我在 UIColor 上创建了一个类别来创建随机颜色。但是,从这段代码中,我会认为每次运行该方法时“if”条件都会为真,而不仅仅是第一次。
我认为我并没有真正正确理解静态变量。静态变量是否只设置一次,然后在第二次运行该方法时,该行就被忽略了? (所以在第一次运行后,seeded 将永远是 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];
}
【问题讨论】:
标签: objective-c