Objective-C和Sprite Kit游戏开发从入门到精通
上QQ阅读APP看书,第一时间看更新

2.11 static关键字

在Objective-C中,可以使用static关键字定义静态变量,这种变量可以在代码执行过程中只初始化一次,然后就会一直保存最新的数据。

如下面的代码,我们定义了fn()函数,其中包含一个静态变量counter,当我们每次调用这个函数时,counter就会加1,然后显示调用的次数。

    void fn()
    {
        static int counter = 0;
        counter++;
        NSLog(@"第 %i次调用fn()函数", counter);
    }
    int main(int argc, const char *argv[])
    {
        @autoreleasepool {
            for(int i = 0; i < 30; i++) {
                fn();
            }
        }
        return 0;
    }

代码会显示共调用了30次fn()函数,其中的for语句结构属于循环语句结构的一种,第3章会讨论代码流程控制的相关内容。

在fn()函数中,变量counter定义为静态的,它在程序运行过程中只会进行一次初始化,也就是在定义时赋值为0。然后,当我们每次调用fn()函数时,counter变量并不会重新定义,而是保留最新的值。

此外,我们还可以在const定义的常量前使用static关键字,如下面的代码。

    static const NSUInteger flag0 = 0x1 << 0;
    static const NSUInteger flag1 = 0x1 << 1;
    static const NSUInteger flag2 = 0x1 << 2;