Objective-C static关键字
在接下来的时间里面,我们准备为大家介绍Objective-C中的"static关键字“。
在前面的学习中,我们已经学习了如何去定义与使用方法,而在方法中所定义的变量,在方法调用完毕以后,它们里面的值,是不可以保留下来,因为,它们是局部变量。
如果没有学习过C语言中的局部变量,可以先学习一下我们的C语言开发教程中的”局部变量“这一章。
而为了让方法中所定义的变量,可以在方法调用完毕以后,让它们里面的值保留下来,那么,我们就需要使用关键字static去定义方法中的变量,而这种变量称为静态变量。
首先,我们来看看使用static定义变量的语法格式:
static 变量类型 变量名;
语法格式分析:
(1)以关键字static开头。
(2)变量类型,就是前面所学习的整型,浮点型,字符型等的关键字。
(3)一个合法的变量名,按照变量名命名规则定义即可。
static关键字的特点:
(1)static所定义的变量的初值默认为0。
(2)static定义的变量只会在第一次执行时进行初始化赋值,其后,再次执行都不会进行初始赋值。
接下来,我们结合例子作进一步的学习。
@interface Role : NSObject //定义了类Role,并继承了根类NSObject
{
}
- (void) moveX; //定义了方法moveX
@end
//===================//
//---实现Role类中的方法--//
//===================//
@implementation Role
- (void) MoveX //实现方法MoveX
{
static int x = 0; //定义了静态变量x
x = x + 1;
}
@end
//入口函数main
int main ( int argc, const char * argv[] )
{
Role *m1 = [ [ Role alloc ] init ]; //定义对象 m1 并分配了内存空间。
Role *m2 = [ [ Role alloc ] init ]; //定义对象 m2 并分配了内存空间。
[m1 MoveX]; //这一行代码是第一次通过对象m1调用了方法MoveX,
所以,MoveX中的静态变量 x 进行了初始赋值为0,
然后,再执行了x + 1,即0+1,结果等于1,再赋值给变量x,
所以,在方法MoveX执行完毕以后,静态变量x 中的值等于1,并保留下来。
[m2 MoveX]; //这一行代码,通过另一个对象m2调用了方法MoveX,
而方法中是不会再次执行静态变量x进行初始赋值为0这一行代码的,
所以,它会直接执行x=x+1;这行代码,而现在的x 中的值等于1,
所以,就是1+1等于2,将结果2保存回变量x中。
所以,当方法MoveX执行完毕以后,静态变量x中的值等于2,并保留下来。
return 0;
}
非常好,现在,我们已经掌握了Objective-C中的“static关键字”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)