Objective-C 协议可选与必选项

 

  在接下来的时间里面,我们准备为大家介绍Objective-C中的"协议可选与必选项"。

 

  (1)协议的可选项,通过关键字@optional 所定义的方法就是可选项,也就是,可以在

     类中实现,也可以不实现,但是,没有实现的方法,是不可以调用的,否则,会报错。

  

  (2)协议的必选项,通过关键字@required 所定义的方法就是必选项,也就是,如果类使用了

     协议,就必须在类中把必选项的方法实现出来,否则,会提示警告。

        

 

 

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

 

 

@protocol GameProtocol            //定义了协议GameProtocol

 

 @optional                  //可选项,可以实现,也可以不实现
   -(void) Gun : (int) x ;            //定义手枪类Gun

 

 @required                  //必选项,必须在使用当前协义的类中实现,

                        否则,会有警告提示
-(void) ShotGun : (int) x : (int) y ;          //定义散弹枪类ShotGun

 

@end

 

 

 

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

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

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

@interface Role : NSObject <GameProtocol>  //使用了协议GameProtocol
 {

  int x;

  int y;
 }

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

@end


@implementation Role


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

 }

 

 -(void) ShotGun : (int) x :(int) y  //定义了协议中的散弹枪方法ShotGun
 {
   x = x + 1;

   y = y + 1;
}


@end

 

 

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

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

 

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


 [ r1  Gun ];        //错误,虽然,Gun方法在协议中是可选,可以不在类中实现,

                但是,没有实现的方法,通过对象r1去调用它就会报错。

 

  [ r1  ShotGun:1:2 ];  //正确,因为,Role类中实现了协议里面的ShotGun方法。

}

 

 

 

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

 

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

 

 

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

进入游戏学习与训练