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中的“协议可选与必选项”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)