项目情况
- AppDelegate三方库初始化较多,
-didFinishLaunchingWithOptions:
首屏展示慢。 - 三方库手动导入,文件目录混杂。
- MVC架构,ViewController过于臃肿。
View
不方便复用。 - 部分地方没有model,重复的做着数据解析。
- 过度依赖
Base
类,耦合严重,违反OO原则
。 - 过度依赖
ShareManager
单例类,耦合严重,数据混杂。
优化操作
1.AppDelegate
- 使用
PromisesObjC
对三方库进行懒加载,异步初始化。减少启动时处理时间。 - 分享、通知等回调使用责任链模式下发到各自
handler
处理。耦合性低,符合单一责任原则
。
成果:
AppDelegate -didFinishLaunchingWithOptions:
执行时间减少0.3秒。
AppDelegate 代码拆分由3000行到170行。
2.架构
- 网络框架重新封装,进行公共报错处理。使用方便。
-
MVC
改为MVVM
,对ViewController
解重,由ViewModel
去请求数据,使用MVVM
+RAC
进行响应式编程。(耦合低,逻辑清晰,易维护) - View由
XIB
+AutoLayout
改为masonry
。(易修改,易复用。) - UI之外的任务使用
PromisesObjC
进行多纯种异步处理,还可对任务失败重试、任务依赖管理等。减少主线程任务,避免UI卡顿。充分使用多线程优势。 - 使用
YYModel
进行字模转换,网络数据解析、传值、使用方便。 - 使用
CocoaPods
管理三方库,方便安装、卸载、更新。
3. Base类
根据OO原则,对代码进行拆分。
- 只保留部分UI样式设置
- 公共跳转、弹窗、公共方法分别封装。
成果:
Base类 8000多行代码拆分,最后220行。
逻辑清晰,耦合性低,可靠易维护,BUG出现概率少。
4.ShareManager
- 用户信息由
AccountManager
进行维护处理。 - 配置信息由
AppConfig
进行维护。
优化初步成果:
编译时间:从178减少到123秒。减少了55秒。
源码大小:之前113.5M,优化后106.8M。(不包括三方库)
源码文件个数:之前8530,优化后8038。(不包括三方库。
Archive后包大小:之前197.7M,优化后148.5M。

Xcode显示编译时间方法:
//1、终端执行下方代码
$ defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
//2、重启Xcode。
网友评论