美文网首页
Effective Objective-C 2.0笔记(四)

Effective Objective-C 2.0笔记(四)

作者: 孔朝阳 | 来源:发表于2019-01-21 18:34 被阅读0次

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

    1、委托模式(Delegate Pattern):定义一套接口,某对象若想接受另一个对象的委托,则需遵从此接口,以便成为其委托对象。信息从类流向受委托者。

    2、数据源模式(Data Source Pattern):定义一套接口,令某类经由该接口获取其所需数据。信息从数据源流向类。

    3、delegate属性使用weak,不要引起保留环(retain cycle)。

    4、如果要在委托对象上调用可选方法,需提前使用类型信息查询方法判断是否可以响应,respondsToSelector。

    5、可以实现含有位段的结构体,将委托对象是否能响应相关协议方法这一信息缓存至其中,以优化程序效率。

    UITableViewDelegate

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

    1、使用分类(Category)把类的实现代码划分成易于管理的小块。

    2、将私有方法归入名为Private的分类中,以隐藏实现细节。

    NSURLSession Category

    二十五、总是为第三方类的分类名称加前缀

    1、分类机制通常用于向无源码的既有类新增功能。

    2、将分类方法加入类中这一操作是在运行期系统加载分类时完成的。

    3、添加分类时,总应给其名称加上前缀。

    4、添加分类时,总应给其中的方法加上前缀。

    二十六、勿在分类中声明属性

    1、属性是封装数据的方式,尽量把封装数据的所用的全部属性都定义在主接口里。

    2、分类目标在于拓展类的功能,而非封装数据。

    3、除了class-continuation分类之外,其他分类都无法向类中新增实例变量,因此,他们无法把实现属性所需的实例变量合成出来。

    4、使用关联对象能够解决在分类中不能合成实例变量的问题,但不推荐。

    二十七、使用class-continuation分类隐藏实现细节

    1、class-continuation分类必须定义在其所续接的类的实现文件中,是唯一能声明实例变量的分类。

    2、如果某属性在主接口中声明为readonly,而类的内部要用设置方法修改此属性,那就在class-continuation分类中将其扩展为readwrite。

    3、若想使类所遵循的协议不为人知,则可于class-continuation分类中声明。

    二十八、通过协议提供匿名对象

    相关文章

      网友评论

          本文标题:Effective Objective-C 2.0笔记(四)

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