iOS 如何优化项目

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

前言


在项目业务趋于稳定的时候,开发完迭代需求后,我们可能会无所适从,进入一段空白期,但是对于攻城狮来说闲暇不是件好事,所以我们可能总想学点什么,却又没有头绪。这个时候我们就可以考虑完善和优化我们的项目了。从中可以运用到一些底层RunLoop或者Runtime的知识,熟能生巧总是没错的。


1. 结构与架构


1.1 结构


这里说的结构大概有两点:1.文件目录分类 2.第三方库管理


1.1.1 文件目录分类


为了方便管理,最好将Xcode中的项目展示目录与实际的存储目录保持一致

此外,一般按业务模块分类,一级目录可以按照MVC格式,也可以按照业务模块划分

用最普遍的Model View Controller架构举例


  1. 以一个基础的电商项目来解释,4个tabbarItem对应着四大模块,首页、分类、购物车、个人中心,往下每个还可以细分为MVC+Session层

  2. 按项目架构来分 <br/>


最外层为Model、View、Controller、Session层,内部才是业务模块

这一块无需多言,两者配合使用即可


1.1.2 第三方库


个人建议:时间允许的话自己多造造轮子,风险可控,好维护


如非必要,尽量不要直接使用已经编译好的三方库(framework/.a),最好自己去编译三方库(安全要求)


管理方面有三种方式:


  1. 手动管理

  2. 手动维护各种第三方库,适合于已经趋于稳定、极少Bug的三方库

  3. CocoaPods

  4. Carthage


这里更推荐使用Carthage,因为它对项目的侵入性最小,而且是去中心化管理,不需要等待漫长的pod update / install过程.不过各有各的好处,使用CocoaPods简单粗暴,基本不需要额外设置什么,看自己需求吧


1.2 项目架构


项目逻辑基本都围绕了一条主线时,我们采用MVC已经可以很好的满足我们的需求,但是当业务逻辑日渐复杂的时候,我们单纯的采用Model View Controller这种编程模式已经不能很好的将业务逻辑与代码分离开,也就是解耦Decouple.

为了更好的将ViewController解耦,产生了Model View ViewModel这种编程模式,ViewModel层其实做了一层Model与ViewController中间的桥接,有利有弊,该模式会产生很多胶水代码,但是配合响应式编程框架(如 ReactiveCocoa或者RxSwift),可以做到最大程度的解耦。,适合与自己实际项目业务复杂程度的模式才是好的编程模式。


引申 : <关于组件化编程>


如果项目业务很复杂、很多业务组件都通用,可以采用组件化编程,常用的一种就是采用CocoaPods将项目业务模块分拆成各种pod库,使用什么模块直接集成就好,再配合MVVM和响应式编程框架(如 ReactiveCocoa或者RxSwift),可以做到最大程度的解耦。


2. 崩溃&性能调优


当项目已经完成业务模块上线后,我们就可以开始考虑关于如何提高App的用户体验,举例一下几个问题:


1. 代码规范,定期code review了吗

2. 复杂列表的滚动时FPS可以保持在60帧左右吗?

3. 页面加载渲染的耗时能不能进一步减小?

4. 网络缓存有做吗,UIWebView / WKWebView的常用静态资源做缓存了吗

5. App的启动时间可以在保持最小业务逻辑的同时再减小一点吗?


2.1 UITest & UnitTest


当开发完新需求的时候,在提测之前我们最好编写下UITest和UnitTest,覆盖主业务流程即可,可以提高我们的提测质量,减小一些可见的Bug,再加上冒烟用例,最大程度上提高我们提测的质量(成为KPI之王 -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值