OC中的协议
来源:互联网 发布:?+?=123风靡网络 编辑:程序博客网 时间:2024/05/01 09:07
在objective-c程序设计中,我们在定义有些类的时候,这些类需要遵循某些协议。问题来了,那么协议到底是什么了?
协议是多个类共享的一个方法列表。协议中列出的方法没有相应的实现,可以由其他类来实现。协议提供一种方式,用指定的名称定义一组多少有点相关的方法。这些方法通常有文档说明,从而可以知道他们是如何执行的。当然,也可以在自己的类定义中实现它们。
协议列出了一组方法,有些可以是选择实现,有些是必须实现。如果决定实现特定协议的所有方法,也就必须遵守这项协议。可以定义协议中的所有方法都是必须实现的,也可以都是选择实现的。
下面来看以下Foundation框架下的头文件NSObject.h中定义NSCopying协议的方式:
......
@protocol NSCopying
- (id) copyWithZone: (NSZone *) zone;
@end
@protocol 是定义协议的指令,后面则是协议名称。
如果你的类采用NSCopying协议,则必须实现名为 copyWithZone:的方法。通过在@interface行的一对尖括号 <......> 列出协议名称,可以告诉编译器你正在采用括号内的相关协议。这项协议的名称放在类名和它的父类名称之后,例如:
@interface AddressBook:NSObject <NSCopying>
这说明,AddressBook是父类为NSObject的对象,并且它遵守NSCopying协议。因为系统已经知道以前为这个协议定义的方法,所以不必在接口部分申明这些方法。但是,要在实现部分定义它们。
在AddressBook的实现部分,编译器期望找到定义的 copyWithZone:方法。
如果要采用多项协议的话,只需要在尖括号 <> 内添加用 ,隔开便可。编译器将期望在 AddressBook 的实现部分看到为这些协议列出的所有方法的实现。
- OC学习:OC中的协议
- OC中的协议
- OC中的协议protocol
- OC中的协议
- OC中的协议
- OC中的类目与协议
- OC中的分类和协议
- 关于OC 语言中的协议
- OC中的协议(@protocol)
- c++抽象类实现OC中的协议
- 黑马程序员 --- OC中的协议代理
- OC中的类别Category-协议Protocol-…
- OC中的类别、类扩展与协议
- OC中的类扩展和协议
- OC中的以协议实现的委托
- oc中的协议 类目 与多态
- OC中的非正式协议与正式协议的区别
- OC协议
- java web开发flex做前台界面 (上)
- 杂谈---什么时候你才能够跳槽
- 实现滑入划出逐渐透明特效
- Cookie纪录上次访问时间
- HMM学习笔记_2(从一个实例中学习HMM前向算法)
- OC中的协议
- typedef与define的区别
- t-sql写入图片到数据库
- HMM学习笔记_3(从一个实例中学习Viterbi算法)
- bitset
- Excel + SQL Server 导入导出类
- python + fiddler抓包测试
- Robust PCA 学习笔记
- SVN工具的使用 和在Eclipse中安装GPD插件:(多步审批流,因此选择使用工作流(JBPM)来实现)