zoukankan      html  css  js  c++  java
  • iOS开发框架-CDD应用层架构学习总结

    怎么样用context,把数据、view和业务逻辑串起来的?

    例如:聊天页面,输入框view产生的“hello”文本,直接通过context传递到BusinessObject进行处理,生成的新消息message通过DataHandler插入到message array之后,直接通知到message tableview进行刷新。方法调用的路径变短了,意味着调试的时候step over的次数减少了。

    通过model+protocol进行耦合。耦合的双方需要引用相同的model和protocol文件。这种方式属于面向接口编程的范畴,耦合也比较弱。优点是调试方便,delegate的调试可以单步step into。

    几个理解点:

    • 为什么引入Context,或者Context的用途是什么?

     VC创建并强引用Context,让dataHandler和bussinessObject弱引用这个Context,让自己的子view强引用这个Context。这样通过Context连接业务、VC、View、数据。

    • data flow是怎样的?

    用户通过view产生数据,通过Context将数据,交给BussinessObject(将数据model化),交给dataHandler做增删改,通过KVO,刷新view。

    • 为什么有的地方用的是weakContext?

    Context初始化完成,强引用dataHandler和bussinessObject。为了避免互相强引用,造成内存泄漏,所以CDDDataHandler和CDDBusinessObject弱引用Context。

    •  bussinessObject的属性baseController,用途是什么?

    在VC创建bussinessObject时,bo.baseController = self;// 用于bussinessObject处理页面跳转(业务)

    遇到的坑:

    • 为什么按钮的图片没有显示出来?

    [_imgAvatarButton sd_setImageWithURL:[NSURL URLWithString:msg.fromUser.avatarUrl] forState:UIControlStateNormal];//因为info里没有允许http

    EMainController:绑定vc,view,presenter,interactor,context,发消息给IMainView

    EMainPresenter:继承EPresenter,组装model数组,提供给adapter;发消息给IMainInteractor
    EMainView:继承CDDView,初始化subview
    EMainAdapter:继承EAdapter,可以重写dataSource和delegate方法,
    EMainInteractor:继承CDDInteractor,转场vc

    IMainPresenter:自定义协议方法,发消息给EMainPresenter,做具体的事情
    IMainView:自定义协议方法,发消息给EMainView,做具体的事情
    IMainInteractor自定义协议方法,发消息给EMainInteractor,做具体的事情

    MainEntry:继承EAdapter,定义model,并提供初始化方法
    EAdapter:收发数据,执行dataSource和delegate

    文献:http://mrpeak.cn/blog/cdd/

    项目实例:https://github.com/music4kid/TKeyboard

  • 相关阅读:
    JavaScript的系统函数学习
    Web开发过程中要注意的问题 [转]
    试图运行项目时出错:无法在web服务器上启动项目得解决办法
    不错的函数
    js 学习笔记
    [转载]学习英语之写作篇 (兼考拉回国杂记之八)
    [转载]学习英语之阅读篇 (兼考拉回国杂记之七)
    转载 在WPF中使用Microsoft Chart Controls (MSchart)
    word excel ppt 简单实用总结
    (转)深入浅出WPF(1)——什么是WPF
  • 原文地址:https://www.cnblogs.com/dengchaojie/p/7765668.html
Copyright © 2011-2022 走看看