iOS IM开发建议(一)App框架设计
先说一下为什么要讲框架的设计。
第一、IM应用一般是基于长连接的,也就是后台一直在收发数据,那这里就有一个后台的概念;
第二、如果用户是一个人群里面的中心人物的话,那么他的的数据量就会很大。页面的显示及数据库的处理就需要关注了;
第三、分解app有利于我们降低耦合,在后期维护和升级时,稍微容易一点。
我觉得框架就是先拆解部件再建立联系。框架有很多种,我借鉴的是依赖注入。
依赖
这个模块是所有部件运行的中间节点,负责app内的信息传递和数据处理。因此,app运行时他就必须存在。那这里有两个合适的人选,一个是AppDelegate,一个是他的RootViewController。这里我选择的是RootViewController,原因我说一下一下:1、我使用了CoreData,也需要处理APNS,所以AppDelegate已经很魁梧了;2、我的app是基于TabBarViewController,而TabBarViewController对用户是不可见的,他不需要处理UI,而且几个主要页面都是他的viewcontrollers,方便调用。
选好了之后,我们需要明确他的作用。我给他分配了这几件事情:处理网络模块推送来的数据,存入数据库,推送数据更新的通知到各个页面。也就是外部的数据,到这里就止步了,不会直接操作UI界面。
网络通讯
这个模块负责和服务器的数据传输,app运行阶段都不可以被销毁。所以,这个模块需要使用单利模式来创建,并且放在全局线程中。这个模块对外就是收发数据;对内就是传递数据到依赖和接受UI界面的发送指令。也就是他只管收发数据,不操作UI和数据库。
数据库
他负责增删改查。。。(他好轻松,只要出个API就好了)
UI界面
这里指app所有可视、可交互页面。所有你想掐死产品的原因都展示在这里。然而这是用户可见的,也就是说,不能卡顿,要好操作等等。有些页面会有很多的UI交互,为此我们不能给他太多负担。那我就让他做两件事,展示和发送请求。展示是他本来的工作,取一下数据库,更新UI;请求是一个接口,他只要抓取页面的数据填进去就好了。
总结一下:将每个模块拆开之后,他们所做的事情就很明确,数据的来源也得到了保证,UI的处理逻辑也简单。全API的调用方式便于后期拓展。
附简图:
转载于:https://www.cnblogs.com/akforsure/p/5302288.html
iOS IM开发建议(一)App框架设计相关推荐
- WWDC15 iOS游戏开发3个新框架全解
简介 在此次WWDC的游戏相关视频中,苹果再一次展现了它非凡的技术整合和持续创新能力.除了继续完善已有的2D游戏框架SpritKit, 3D游戏框架SceneKit和全新的图形渲染API Metal ...
- iOS常用开发工具及第三方框架
iOS开发中使用到的工具,以及为了避免重复造轮子,也为了更快.更有效的地进行开发,常常引用的第三方框架,像网络请求的AFNetworking,数据持久化的FMDB,请求提示符MJRefresh,还有数 ...
- 【Qt编程】基于Qt的词典开发系列一--词典框架设计及成品展示
去年暑假的时候,作为学习Qt的实战,我写了一个名为<我爱查词典>的词典软件.后来由于导师项目及上课等原因,时间不足,所以该软件的部分功能欠缺,性能有待改善.这学期重新拿出来看时,又有很多东 ...
- 云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)
阅读目录 1.WebView高可扩展性封装 1.1 发现模块的框架搭建 1.2 webView的基类 1.3 对webview基类的实现 1.4 setInitializer的方法的实现 1.5 we ...
- iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)
实战需求 使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏 本文价值与收获 看完本文后,您将能够作出下面的界面 实战代码 1.主界面 import SpriteKit im ...
- iOS 跨平台开发,该用 Flutter 还是 Swift?
[CSDN 编者按]在商业和开源代码中被广泛使用的 Flutter 和 Swift 你更中意哪一个呢?本文对两者的优势.性能.流行度等方面进行比较分析,帮助您找出更适合自己项目的框架或语言. 作者 | ...
- 计算机类电影制作专业大学,大学本科计算机专业 电影资讯类APP的设计与实现毕业论文.doc...
PAGE 基于iOS端电影资讯类APP的设计与实现 学院名称: 软件学院 专业名称: 计算机科学与技术 年级班别: 姓 名: 指导教师: __________ 年 月 本科毕业论文 PAGE 20 基 ...
- Android通用框架设计与完整电商APP开发系列文章
作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [[导学视频](http://szv1.m ...
- iPhone开发教程之iOS APP体验设计 - 醒醒吧 ))))) - majszt - 和讯博客
iPhone开发教程之iOS APP体验设计 iPhone开发 | 更新时间:2012-10-15 | 点击:131 | 来源:本站 iOS APP体验设计不像互联网的体验 ...
最新文章
- Linux基础第一周
- Verilog中memory数据类型
- windows 搭建python 虚拟环境 写程序_Windows下搭建Python虚拟环境
- 算法之基础数论应用篇(一)
- NET命令的基本用法
- 【ElasticSearch】Es 源码之 ResponseCollectorService 源码解读
- python循环一段代码_Python循环语句代码详解:while、for、break
- 中国挤奶点控制器市场趋势报告、技术动态创新及市场预测
- 亿阳信通中标9321.91万元智慧城市建设项目
- 应用密码学:协议、算法与C源程序(学习第二章)
- 解决centos7安装wps后的光标跟随问题
- Java游戏开发中应始终坚持的10项基本原则
- CORS Filter
- 手机百度脑图app_百度脑图下载-百度脑图app手机安卓版下载-沧浪手游
- c语言大地坐标转换空间坐标,空间直角坐标系与大地坐标系转换程序
- word,excel文件双击打开慢的问题
- 我,27岁,程序员,9月无情被辞:想给做开发的提个醒…
- 27年,IE时代终落幕
- 【python向日葵】愿我们的生活像向日葵一样灿烂~~~
- 转载 如何用示波器进行UART串口数据分析