协议与委托

一、协议与委托知识点

1、通过委托与数据源协议进行对象间通信

  • 委托模式为对象提供来一套接口,使其可由此将相关事件告知其他对象。
  • 将委托对象应该支持的接口定义称协议,在协议中把可能需要处理的事件定义成方法。
  • 当某对象需要从另一个对象中获取数据,可以使用委托模式,这种情况下,该模式也称“数据源模式”
  • 若有必要,可以实现含有位段的结构体,将委托对象是否能响应相关协议方法( [obj respondsToSelector:@selector(方法名)] )这以信息缓存至其中。

2、将类的实现代码分散到便于管理的数个分类之中

  • 使用分类机制把类的实现代码划分成易于管理的小模块中。
  • 将应该视为私有的方法归入名叫Private的分类中该,隐藏实现细节。

3、总是为第三方的分类名加前缀

  • 向第三方类中添加分类时,总应给其名称加上你的专用前缀,
  • 向第三方类中添加分类时,总应给其中的方法名加上你的专用前缀,

4、不要在分类中声明属性

  • 把封装数据所用的全部属性都定义在主接口中
  • 在“class-continuation分类”之外的其他分类中,可以定义存取方法,但尽量不要定义属性

5、使用“class-continuation分类”隐藏实现细节

  • 通过“class-continuation分类”向类中新增实例变量
  • 如果某属性在主接口中声明为“只读”,而类的内部又要用设置方法修改此属性,那么就在“class-continuation分类”中将其扩展为“可读写”。
  • 把私有方法的原型声明在“class-continuation分类”里面
  • 若想使类所遵循的协议不为人知,则可于“class-continuation分类”中声明。

6、通过协议提供匿名对象

  • 协议可在某种程度上提供匿名类型。具体的对象类型可以淡化为遵从某协议的id类型,协议里规定了对象所应实现的方法。
  • 使用匿名对象来隐藏类型名称(或类名)
  • 如果具体类型不重要,重要的是对象能够响应(定义在协议里的)特定方法,那么可以使用匿名对象来表示。

 

二、协议

 

 

 

 

      

  

用协议实现代理模式

委托方要遵守代理,就要继承代理,并且要实现代理

 

 

三、分类category

 

1、添加文件为分类

注意2中:

分类中写@property ()int age;不会生成私有属性(_age), 在setter方法中_age=age;无法找到_age;  分类的实现文件中写@synthesize age; @synthesize age=_age;都是不行的,会报错。。需要在本类中声明int _age属性,

 

 

 

分类的作用:

将臃肿的类分成多个模块,方便管理;

扩展一个类的功能

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值