Objective-C @protocol(协议)

 

  在接下来的时间里面,我们准备为大家介绍Objective-C中的"@protocol(协议)"

 

  协议:协议就是一个方法定义的列表,在该列表中你可以定义不同的方法,但是,不可以去实现它们

     而协议可以让多个不同的类共享它,然后,在类中去实现列表里面的方法。

 

  接下来,我们看看协议定义的语法格式

 

    @protocol 协议名字

      方法的定义1;

          ...

      方法的定义n;

    @end

 

  语法格式分析

  (1)以@protocol 关键字开始。

  (2)协议名,按照变量命名规则定义即可。

  (3)按照方法定义的格式去定义每一个方法即可。

  (4)@end 说明协议定义结束。

 

 

 

  协议使用的语法格式:

 

    @interface 类名 : 父类名 <协议1,协议2,...协议n>

    {

     属性定义;

    }

    方法的定义;

    @end

 

  语法格式分析

  (1)协议的使用语法格式,就是在类定义的基础上,在类名与父类名的后面添加一对尖括号<>。

  (2)在一对尖括号<>中写入要使用的协议名,不同协议名之间,通过逗号分隔。

  (3)协议中定义的方法可以在@implementation关键字后实现,与类中的方法实现是一样的。

        

 

 

 

 接下来,我们结合例子作进一步的学习。

 

 

@protocol GameProtocol            //定义了协议GameProtocol
 -(void) Gun : (int) x ;              //定义手枪类Gun
 -(void) ShotGun : (int) x : (int) y ;      //定义散弹枪类ShotGun

@end

 

 

 

//===================//

//------定义了Role类-----//

//===================//

@interface Role : NSObject <GameProtocol>
 {

  int x;

  int y;
 }

 - (void) Move;     //移动方法

@end


@implementation Role


 -(void) Move 
 {
  x = x + 1;

 }

 

 -(void) Gun : (int) x //定义了协议中的手枪方法Gun
 {
   x = x + 1;
 }


@end

 

 

//-------入口函数main-----//

int main (int argc, const char * argv[]) {

 

 Role  *r1 = [ [ Role alloc ] init ];  //通过类Role定义了对象r1,并分配了内存空间与初始化。


 [ r1  Gun ];        //正确,调用了实现后协议中的Gun方法。 

 

  [ r1  ShotGun:1:2 ];  //错误,因为,Role类中没有实现协议里面的ShotGun方法。

}

 

 

 

  非常好,现在,我们已经掌握了Objective-C中的“协议”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

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

 

 

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

进入游戏学习与训练