美文网首页
[23]Effective Objective-C 2.0【23

[23]Effective Objective-C 2.0【23

作者: 默然走一生 | 来源:发表于2019-05-27 14:55 被阅读0次

    第四章:协议与分类

    第二十三条:通过委托与数据源协议进行对象间通信

    这条讲的也比较基础,就是基本的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”分类隐藏实现细节

    这条跟之前的也有点重复,最终目的还是要尽量在公共接口中向外暴露的内容最小化,隐藏实现细节,只告诉怎么调用,怎么使用即可。具体实现以及属性的可修改权限尽可能的隐藏掉。

    第二十八条:通过协议提供匿名对象

    1. 协议可以在某种程度上提供匿名对象,例如id<someProtocal> object。object对象的类型不限,只要能遵从这个协议即可,在这个协议里面定义了这个对象所应该实现的方法。

    2. 如果具体类型不重要,重要的是对象能否处理好一些特定的方法,那么就可以使用这种协议匿名对象来完成。

    相关文章

      网友评论

          本文标题:[23]Effective Objective-C 2.0【23

          本文链接:https://www.haomeiwen.com/subject/pvjhtctx.html