在下面的代码中,我在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]; }
cobbal.. 15
你是正确的,静态变量只设置一次.
代码
static BOOL seeded = NO;
是不是等同于
static BOOL seeded; seeded = NO;
第二个将总是评估为NO,而第一个将评估为NO,直到设置不同.
你是正确的,静态变量只设置一次.
代码
static BOOL seeded = NO;
是不是等同于
static BOOL seeded; seeded = NO;
第二个将总是评估为NO,而第一个将评估为NO,直到设置不同.