第四章:协议与分类
第二十三条:通过委托与数据源协议进行对象间通信
这条讲的也比较基础,就是基本的delegate,protocal使用。
有一点稍微说一下:当某对象需要从另外一个对象中获取数据时,可以使用委托模式,这种用法经常被称为“数据源协议”(Data source Protocal)类似 UITableview的UITableViewDataSource
另外在Swift中有一个很重要的思想就是面向协议编程。当然OC中也可以用协议来降低代码耦合性,必要的时候也可以替代继承,因为遵循同一个协议的类可以是任何,不必是同一个继承体系下。
第二十四条:将类的实现代码分散到便于管理的数个分类之中
这条主要说的是通过分类机制,可以把类分成很多歌易于管理的小块。也是有一些前提的吧,可能是这个类业务比较复杂,需要瘦身,需要解耦等等。作者还推荐把私有方法统一放在Private分类中,以隐藏实现细节。这个个人觉得视情况而定吧。
第二十五条:总是为第三方类的分类名称加前缀
向第三方类的分类名称加上你专用的前缀,这点不必多说,😜
第二十六条:勿在分类中声明属性
不要在分类中声明属性,除了“class-continuation”分类中。那什么是“class-continuation”分类呢,其实就是我们经常在.m文件中用到的,例如:
//Swift.m
@interface Swift ()
//这个就是“class-continuation”分类
@end
@implementation Swift
@end
第二十七条:使用“class-continuation”分类隐藏实现细节
这条跟之前的也有点重复,最终目的还是要尽量在公共接口中向外暴露的内容最小化,隐藏实现细节,只告诉怎么调用,怎么使用即可。具体实现以及属性的可修改权限尽可能的隐藏掉。
第二十八条:通过协议提供匿名对象
协议可以在某种程度上提供匿名对象,例如id<someProtocal> object。object对象的类型不限,只要能遵从这个协议即可,在这个协议里面定义了这个对象所应该实现的方法。
如果具体类型不重要,重要的是对象能否处理好一些特定的方法,那么就可以使用这种协议匿名对象来完成。