延展类目协议

1. 类目 (Category):为已知的类添加方法



可以为已知的类添加方法,哪怕是你没有源码的类


通过类目添加方法会成为原始类的一部分


与原类中的方法同级 


而且会被子类继承


类目的用处

1. 可以扩展别人的类,可以作为继承的替代方式。

 2. 把代码放到多个文件中;便于多人协作。


注意:

不能在类目中添加 成员变量

可以为同一类添加多个类目,但类目名和方法名不能重复 

不要随意重写类中的方法


*********************************************************************


2. 延展 (Extension) :是一种特殊形式的类目

编写在类的实现文件中

延展中定义的方法在类本身中实现(.m)


作用:定义私有方法


注意:

  延展不写类目名时(即括号内不写),表示延展中定义的方法,必须实现。 


  如果提供了类目名称,则可以选择性实现

//····.m

@interface Test()

-(void) show;

@end



**************************************************************************


3. 协议 (Protocal):是一套标准(类似于接口、方法声明)


        定义了应该实现什么,但不关心具体的怎么实现。


      OC的协议是由@protocol声明的一组方法列表


      要求其它的类去实现,相当于@interface部分的声明


@protocol 协议名称 

@end 


确认协议:


定义的协议必须要被某些类实现


类中需要实现协议中定义的方法 


类中可实现多个协议

@interface 类名:⽗类名< 协议名称,协议名⼆...>

@end


特点:

1. 协议相当于确认类的父类

2. 可以规范类的行为

3. 利于系统设计

4. 利于团队开发等

5. 是可选语法,并不是一定要使用协议


注意:


确认协议时应实现协议中 @required 修饰的方法 

可以选择性实现 @optional 修饰的方法


使用[对象 conformsToProtocol:@protocol (SalerProtocol)]判断是否遵循协议



协议的实现过程:定义协议------确认协议-------实现


******************************************************************************


协议应用—代理

代理模式:(有没有协议都是可以实现方法)

    即本身不做实际的事情,而要求其他人去做


    例如要卖房子,不是直接销售,而是让中介去帮自己销售 


    中介就是我们的代理



用assign修饰   

@property(assign, nonatomic) id<protocol>delegate;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值