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 ...
随机推荐
- 简谈百度坐标反转至WGS84的三种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...
- .Net多线程编程—任务Task
1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...
- 使用etree.HTML的编码问题
title: 使用etree.HTML的编码问题 date: 2015-10-07 17:56:47 categories: [Python] tags: [Python, lxml, Xpath] ...
- 【接口开发】浅谈 SOAP Webserver 与 Restful Webserver 区别
接口,强大,简单,交互,跨越平台 下面简单阐述这两大接口思想 一 REST: REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性. ...
- Power BI官方视频(3) Power BI Desktop 8月份更新功能概述
Power BI Desktop 8月24日发布了更新版本.现将更新内容翻译整理如下,可以根据后面提供的链接下载最新版本使用. 1.主要功能更新 1.1 数据钻取支持在线版 以前的desktop中进行 ...
- 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)
在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...
- 卸载oracle之后,如何清除注册表
之前卸载了oracle,今天偶然间发现,在服务和应用程序里面,还残存着之前的oracle服务.原来,还需要去清理下注册表. 在开始菜单的这个框里面 输入regedit,进入注册表.找到这个目录 HKE ...
- Autofac - 方法注入
方法注入, 其实就是在注册类的时候, 把这个方法也注册进去. 那么在生成实例的时候, 会自动调用这个方法. 其实现的方法, 有两种. 准备工作: public interface IAnimal { ...
- 设计模式之单例模式(Singleton)
设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ...
- 【干货分享】流程DEMO-事务呈批表
流程名: 事务呈批表 业务描述: 办公采购.会议费用等事务的申请.流程发起时,会检查预算,如果预算不够,将不允许发起费用申请,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金 ...