当前位置:  开发笔记 > 编程语言 > 正文

Objective C中的静态BOOL

如何解决《ObjectiveC中的静态BOOL》经验,为你挑选了1个好方法。

在下面的代码中,我在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,直到设置不同.



1> cobbal..:

你是正确的,静态变量只设置一次.

代码

static BOOL seeded = NO;

不是等同于

static BOOL seeded;
seeded = NO;

第二个将总是评估为NO,而第一个将评估为NO,直到设置不同.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有