学习OC的类别,协议和代理

睡前又把基础知识点重新学习了一遍



类别:category

协议:protocol

代理:delegate



1、类别

类别(Category)是oc中的一个新的语法特性。

有两种用途:①、在原有类的基础上添加新的方法;②、将相同的方法归类,使用更方便;


解释①:在不创建继承类的情况下,实现对已有类的扩展;

例如:给NSString扩展一个字符串反转的方法,不需要重新创建子类,直接使用类别扩展反转方法。

注意:类别和子类的区别,类别不能新增实例变量,而子类可以继承父类的实例变量,也可以新增实例变量。

子类和类别如何抉择:没有界限分明的情况下,如果需要新增实例变量,那么就使用子类;否则就使用类别。


解释②:在一个大型类中,可以用类别将众多的方法分组,方便阅读,也方便多人协作共同开发,避免冲突。




2、协议:

协议(Protocol)是OC中的一种概念,协议与类的.h类似,协议中只定义了方法的声明,但是没有实现,也即是只有.h文件

例如下面就是一个完整的协议:


如果某各类遵守了这个USB协议,那么就必须实现其中必须要(Required)实现的方法,其他类型方法可选择实现。




3、代理:

代理(Delegate)主要是用来实现消息传递的,是一种设计模式;

代理常用来实现代理设计模式,协议经常用来实现委托对象,一个委托对象是一种用来协同或者代表其他对象的特殊对象。

代理与协议的结合使用,主要看下面红色部分:

为当前类声明一个id类型的delegate,这个delegate遵守<ClickConnectionDelegate>协议,需要传值时,就判断这个delegate是否响应协议中的方法,如果未响应,直接return;如果响应了协议中的方法,那么这个代理就执行这个方法,协议方法有两种情况:①、回传值;②、回传事件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值