iOS架构一个中型普通App的一些经验总结
这一版比较完善的的App终于提交审核了。有时间写写自己的一些经验的总结了。自己主导的从0到比较成型的app到目前来说也只有两个,但是其中的很多东西都是大同小异。基本上是想到了什么就写什么,感觉写的不到位的地方,欢迎留言给我。
1.首先是controller的解藕方面的东西:
OC的时代,苹果对于controller的解藕做的不是神完善,对于这块的内容,可以看看我去年写的一篇文章,快速直达。那篇文章介绍的还不是很完善,里面的实例代码也不是很完善。比如说没有个baseviewcontroller之类的东西,实际的时候要弄个这个,present的时候没有默认的新建nav。总之参考一下就好了。
2.数据方面,主要使用了AFNetWorking作为基础的网络框架,辅以基于此封装的 YTKNetwork 很多网路需要自定义的东西YTKNetwork做的都比较到位,比较建议大家比较深入的研究一下这个基于AF二次封装的YTK。然后在此基础上加入自己的一些自定义的(其实就是修改源代码啦),使用起来还是很方便的,打印curl去和后端争论,真的很爽呢。但是个人还是比较习惯的为每个接口的网络请求创建一个专门的子类,这样可配置的东西就多了,对于比较大型的程序的灵活性和可扩展性还是非常有帮助的。
3.MVVM和MVC的更深入的使用,见到有人面试的时候对此说的头头是道,真正使用的时候却发现没有体会到其中的精髓。
举例来说,因为个人喜欢把几乎所有的controller的基view弄成scrollview或者其子类的tableview,主要是有bounce效果,尤其是tableview,虽然一开始创建的时候会比较麻烦,写的代码可能不如直接往一个view或者scrollview上面堆控件来的更直接一些,但是等到产品的需求各种变更的时候就知道了。另外,使用tableview还可以把很多的业务逻辑分拆到cell里面,只要把数据抛给相应的cell,怎么展示怎么交互就都抛给cell去做了,有什么结果可以再回调回来。如果controller的数据变了,只需要重新config相应的cell,reload一下那一条cell就解决了,程序执行效率高还不容易出错,出了错也比较好调试。
使用xib布局基本的样式,这样也能大大的减少controller的代码,只有逻辑变更的时候可能是需要在controller里面写一些代码,controller的代码尽量的保持简洁,真的非常棒,逻辑更清晰了,再也不想看特别长的很多不该写在controller却又写在里面的的代码了。
4.合理的使用单例。
单例这个东西是比较好用的,但是因为其威力比较大,影响会比较广泛,所以一定要慎重的使用。用户基本信息,登录否等的基本信息可以存在单例里面,但是可以是单例持有的一个userinfo的对象,保持扩展,说不定那天你的程序就可以多用户登录了呢。
5.用到的第三方的东西,尽量的自己做一下封装。
HUD啊,高德地图啊,等的东西,使用的时候最好封装一下,不但自己使用的时候会方便很多,后期效果的修改可以在不改动第三方库的情况下进行比较高级别的base修改。尤其是使用了cocoapods安装类库的时候,不改库,能更方便的更新版本。
6.bug的反馈机制。
版本上线后可能还会发现很多的bug,有可能崩溃,卡顿,等等各种问题。这个时候专门的bug反馈就显得比较重要了。这推荐几个SDK,方便使用。
BugTags https://www.bugtags.com/
BugHD https://bughd.com/
再加上转门的符号表分析工具,可以直接解析苹果给的日志,https://github.com/answer-huang/dSYMTools
能追踪到很大部分的日志了。
7.热修复。
版本上线后,有的时候会产生很多的小问题,这些小的问题,可能是致命的,但是提交一次版本审核就比较麻烦了。
原理都是运用了iOS的动态库,主要有两个大公司在引导这方面的技术吧
阿里巴巴:https://github.com/alibaba/wax
腾讯主要使用:https://github.com/bang590/JSPatch JSPatch还有专门的语法转换工具https://github.com/bang590/JSPatchConvertor
反正我这边使用的JSPatch技术,还有专门SDK,使用起来还是很方便的。
就先写到这吧,下班了,想起来其它的再更新补充吧
iOS架构一个中型普通App的一些经验总结的更多相关文章
- 成都app开发:架构一个App需要学会哪些技术呢?
成都亿合科技小编为您分享: 随着APP应用的流行,越来越多的人想自己学习怎么开发APP应用,那架构一个APP需要学些什么技术呢?首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己 ...
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
本文由CocoaChina译者lynulzy(社区ID)翻译 作者:Bohdan Orlov 原文:iOS Architecture Patterns 在 iOS 中使用 MVC 架构感觉很奇怪? 迁 ...
- 对于iOS架构的认识过程
MVC 经典就是经典,没有之一.iOS中MVC架构,看懂斯坦福大学白胡子老头这张图基本上就可以了. 斯坦福大学MVC架构.png 简单理解,就是Controller对象拥有View和Model对象 ...
- iOS架构设计系列之解耦的尝试之变异的MVVM
最近一段时间,在思考如何合理的架构一个可扩展性良好的界面编程方式.这一部分的成果做成了一个叫ElementKit的库.目前功能在不断的完善中. 关于iOS的架构,看多了MVVM,VIPER,MVC,M ...
- 新手怎么读懂一个中型的Django项目
[前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基本的django框架(MTV ,ORM等)师傅可以给讲解一下框架怎么组织url.py,model.py, ...
- iOS - 架构的认识过程,悬崖勒马。
16年的时候写过一篇代码讲解的,依旧是这三种架构,现在20年将近了,看到好的文章,是否增加新的认识. 16年链接 iOS - 架构模式 - 解密 MVC.MVP.MVVM.VIPER架构 新项目选择架 ...
- 读懂一个中型的Django项目
转自https://www.cnblogs.com/huangfuyuan/p/Django.html [前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基 ...
- iOS 模仿一个小项目,总结一下里边的模块
ManoBoo: 参考链接:http://www.jianshu.com/p/fd4c46c31508 这个小的项目是参考ManoBoo的简书的,链接在上方,自己在仿做的过程中,也离不开Man ...
- 发布iOS应用程序到苹果APP STORE完整流程
参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http ...
随机推荐
- 一步步开发自己的博客 .NET版(10、前端对话框和消息框的实现)
关于前端对话框.消息框的优秀插件多不胜数.造轮子是为了更好的使用轮子,并不是说自己造的轮子肯定好.所以,这个博客系统基本上都是自己实现的,包括日志记录.响应式布局.评论功能等等一些本可以使用插件的.好 ...
- html5的web存储
在html5标准之前,web存储信息需要cookie来完成,但是cookie不适合大量数据存储.因为需要等待服务器响应,所以速度慢/效率低. 本地存储的特点: localstorage是仅存储在用户的 ...
- c# 基础 object ,new操作符,类型转换
参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...
- 【centos7常用技巧】RPM打包
一.RPM打包的目的 1.当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可. 2.当需要在目标机中安装多个软件或者增加多个文件时,可以将 ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- iOS之应用版本号的设置规则
版本号的格式:v<主版本号>.<副版本号>.<发布号> 版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1. 产品的主体构件进 ...
- android绘制圆形图片的两种方式
看下效果先 下面有完整的示例代码 使用BitmapShader(着色器) 我们在绘制view 的时候 就是小学上美术课 用水彩笔在本子上画画 使用着色器绘制圆形图片最简单的理解方式 就是把bitmap ...
- 深入理解 Android 之 View 的绘制流程
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...
- sql 删除表中的重复记录
嗯,遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢.哼. 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) sel ...
- 跨域问题,前端主动向后台发送cookie
跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同 http://www.baidu.com:80 和 https:/ ...