本文主要是介绍一起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限定,分别表示的可选实现或者必须实现;
看官们,欲知后事如何且听下回分解!
这篇关于一起Talk IOS吧(第二十二回 OC中的协议概述)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!