一、协议
当协议有多个方法的时候,我们可以通过“位段”将方法的响应能力缓存起来,“位段”属于C语言特性,是一个结构体,我们可以吧结构体中某个字段所占用的二进制位个数设为特定的值。
struct {
int didReceiveData :1;
int didReceiveError :1;
int didReceiveTrue :1;
} _delegateFlages;
我们可以利用可以在delegate的set方法里面,用“位段”来缓存对应的方法响应能力,在每次调用delegate的相关方法之前,就不用检测委托对象是否能响应给定的代理方法了!在相关方法要调用很多次时,值得进行这种优化。
可以通过协议提供匿名对象,就是我们可以通过方法返回一个遵守一个协议的id对象,这样我们就可以以这个对象来进行操作,而不需要关心该对象是什么类型,这样就做到了解耦和,后期就算该对象变了也无需更改共用API和业务代码
二、分类
类中经常填满各种方法,而这些方法的代码全部堆在一个巨大的实现文件中,有时这么做是合理的,但是通过分类机制把类代码按逻辑划入几个分区中,这样会更好。
通过分类机制,可以把类代码分成很多个易于管理的小块,以便单独检视。
特别是可以将类的私有方法全部放到一个分类中,这个分类的方法一般只会在类和框架中使用,无需对外公布。
分类机制通常用于向无源码的既有类中新增功能,但是有个隐患就是分类添加的方法很容易覆盖原来的那一份实现代码,解决办法就是给相关名称添加一个前缀。
给第三方添加分类时候,不仅仅分类名字加前缀,方法名也要加前缀。
不要在分类中声明属性,正确做法是吧所有属性都定义在主接口中。
网友评论