类别和协议

类别是另一种为现有类添加新行为的方法。不同于子类,类别实际上是oc的一种动态行为,它利用了运行时分配机制。因此,类别甚至不需要拥有原类的源代码。此外,类别不能向现有的类中添加实例变量。

类别有很多好处,比如把类的实现分散到多个implementation文件里,或者用于创建非正式协议;

类别也有一些限制,在类别的使用中一定要注意两点:

类别仅仅是一堆方法的集合,你无法为类添加实例变量。

类别不能解决命名冲突,如果类别中的方法与类原有的方法重名,则类中的方法被覆盖。

 

oc中的协议等同于java接口的概念,协议看起来就像类别的生命,还是一堆方法声明的集合。

正式协议的意思是,每个采用这份协议的类必须实现这份协议中的所有方法,这种说法一直持续到oc2.0,从oc2.0开始,协议中的方法可以有选择的由类实现。对于必须实现的方法,用关键字@required修饰,对于可选择性实现的方法,使用@optional关键字修饰。

非正式协议不需要采用@protocol关键字声明,但需要创建一个类别。

转载于:https://www.cnblogs.com/lmg4819/p/4861644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值