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关键字”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

  不要停留在理论规则上面,快动起来吧!

 

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练