OC重新开始(十二)协议

协议

通常情况下,对象的主要作用是表示所处理的消息的类型,而表示对象的作用和行为的方法集合体就称为协议(protocol)。
协议这个称呼通常用于表示互联网的通信协议。OC中的协议最初就是从各个对象之间通信协议中抽象出来的一种概念。与Java中的接口类似。

对象的协议

在对象模型化的软件世界,不同的对象也可以包含相同的方法集合,但通常情况下这些对象并不是继承关系。
在这里插入图片描述

OC中的协议仅仅是声明方法的集合体,实现方法则由各个类自行完成,因此使用协议的各个类是否有继承关系都不重要,重要的是如何实现这些方法。在使用协议的情况下,如果该类实现的改协议的所有方法,则称该类遵循该协议。

协议的声明

@protocol 协议名
声明方法;
@end

协议的采用

@interface 类名:超类名<协议1,协议2>{
	声明接口变量;
}
声明方法;
@end

协议的继承

@protocol 协议1<协议2>
声明方法;
@end

协议的必选以及可选功能

协议列举的方法中,分为必须实现的方法和可选择实现的方法,也就是说可以指定不用实现的方法

  1. @optional后面方法是可选实现的
  2. @required 默认是@required表示方法是必选的

多继承

在OC中是没有多继承的,但是通过对协议以及其他编程技术的组合能达到同样的效果

非正式协议

为了简化协议,出现了非常正式协议。非正式协议只是作为范畴进行声明,并没有实现。

  • 非正式协议被称为NSObject类的范畴
  • 非正式协议中声明的方法不一定要实现
  • 编译时不检查类对非正式协议的适用性
  • 运行时,只确认是否实现了方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值