总体要求
1.实现登陆,注册,组网,灯控制,设置,个人信息,语音消息等内容
2.支持多语言,iPhone ,iPad设计兼容
3.减少控制器代码,Storyboard,ARC 开发为主
4.遵守一定的代码规范
5.实现复杂控件的封装
6.有一定的流程图描述
7.逻辑层代码复用
8.单元测试,代码快捷测试
9.复用形式组网,用户关系,设备管理
关于模块分类
主要模块
登陆,组网,灯控制,设置,个人信息,语音消息
模块间组合与外界交互方式
ISHInterfaceManager
1.管理本库提供的所有业务接口,也是获取具体业务接口的唯一入口点
2.获取本身的实例
3.实例化各个模块
4.获取各个模块
5.协调各个模块当内部处理,或外部事件发生时,协调各个模块进行响应
SHInterfaceManager
ISHInterfaceManager的具体实现
SHBaseModel
1.所有业务模块的基类
2定义获取实例的方法
3.抽象类,实现接口管理器的事件,由子类具体实现
ISHXXModule
模块对外的接口,通过接口管理器获得,具体实现是由各种逻辑代码,工具类,HTTP,SOCKET,数据库,json解析等方式UI层对逻辑层的调用,实现特定的业务逻辑,例如登陆接口,组网的流程等对外逻辑。所有模块和管理器对外调用,使用接口形式,实际提供宏调用方法。简化调用方式
视图控制器
每个模块对应一个Stroryboard,AppDelegate 分iPhone和ipad,对应的控制器,Stroryboard也有对应的iPhone和ipad版本
目录结构
General:存放base控制器,视图 ,弹出窗口
Helpers:一些各模块公用的工具类,包括文件处理,socket,HTTP请求,XML解析,NSObject子类类别
Logics:存放逻辑层代码,包括模块文件,实体文件,manager
sections存放单元测试,目的是为了解决系统自带单元测试的不足,提供UI界面,目前开源库不支持64,未加
Vendors 开源库,第三方SDK
xib:stroryboard ,xib
SLLog 打印不同级别的日志
#define LOG_FLAG_ERROR SLLogFlagError
#define LOG_FLAG_WARN SLLogFlagWarning
#define LOG_FLAG_INFO SLLogFlagInfo
#define LOG_FLAG_DEBUG SLLogFlagDebug
#define LOG_FLAG_VERBOSE SLLogFlagVerbose
HTTP 请求
通过AFNetWork封装HTTP请求,传入统一的Dict ,实现key value的配备,和URL等待返回结果,封装错误信息,返回具体结果给调用者解析,最后返回到UI界面
Socket
1.基于基础的SOCKET 通信机制,实现收发功能
2.构造封装公共字节流和解析公共部分的方法,假如子类有其他的除了公共部分的参数传入或是公共部分以外的返回结果,对应给子类添加或解析。
3.发送机制有重发和超时机制,为解决UDP的丢包问题
未完善部分
文件存储,数据库,单元测试,UI界面