码迷,mamicode.com
首页 > 其他好文 > 详细

CDD应用层架构学习总结

时间:2017-11-01 13:41:09      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:输入   通过   muse   文件   初始化   step   方便   方法   属性   

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

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

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

技术分享

 

文章出处:http://mrpeak.cn/blog/cdd/

几个理解点:

  • 为什么引入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

CDD应用层架构学习总结

标签:输入   通过   muse   文件   初始化   step   方便   方法   属性   

原文地址:http://www.cnblogs.com/dengchaojie/p/7765668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!