一起Talk IOS吧(第二十二回 OC中的协议概述)

看官们,我们在前面章回中介绍了面向对象的三个主要内容,本章回中我们将面向对象的另外一个知识点:协议。

协议综合了封装与继承的特性,在IOS编程中使用比较多。我们先给一个简单的模板代码,通过代码来了解什么是协议:

@protocol ProtocolName 
@required/@optional
-(type) ProtocolFunction;
@end

@interface ClassName: BaseClass <ProtocolName>
//类的属性和方法声明省略不写
@end

@implementation ClassName
-(type) ProtocolFunction {
	//do something
}
@end

在上面的代码中们通过protocol关键字定义协议,并且在协议中定义一个方法。大家可以发现协议的定义和类的定义完全相同,不同之处在协议使用了protocol关键字。

接着定义了一个类并且实现该类,在类的实现中实现了协议中的方法。此外,还有一个重要的地方就是定义类的时候实现了协议。实现的语法是使用尖括号包含协议名,如果需要实现多个协议,那么只需要使用逗号分隔协议就可以。

看官们,从代码模板中可以看到,协议封装了方法,并且可以被类继承。因此,协议可以看作是一种轻量级的类。 虽然类可以实现协议,但是协议不能继承类,协议也可以实现其它协议,并且支持实现多个协议.

我们再回到协议定义部分中,它只声明了方法并没有实现方法,哪么这个方法要到什么时候才被实现呢?答案是协议被类实现时,也就是类实现自己方法的时候实现协议中的方法。不过并不是所有协议中的方法需要被类实现。因为协议中的方法分必须实现和可选实现两种要求,使用optional限定的方法表示可选实现,使用required限定的表示必须实现。如果两种限定都没有写默认为必须实现。对于必须实现的方法,如果没有被类实现,那么编译器会发出警告,提示没有实现协议中的方法。

看官们,协议和Java中的接口类似,如果有看官会使用Java或者看过我在Talk Android中的博客,那么很快就会掌握协议相关的知识。此外,有些地方把类实现协议叫作遵守协议,这只是叫法不同,大家看到后不要感到陌生就可以。在我的博客中统一使用实现协议。

最后我们对本章回的内容做个总结:

  • 1.定义协议使用protocol关键字,实现协议时使用<>尖括号;
  • 2.类可以实现协议,但是协议不可以继承类,类可以实现多个协议,多个协议之间使用逗号分隔;
  • 3.协议中只声明方法,在实现协议的类中实现方法;
  • 4.协议中的方法使用optional或者required限定,分别表示的可选实现或者必须实现;

看官们,欲知后事如何且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值