上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;