这一版比较完善的的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,方便使用。

  腾讯 http://bugly.qq.com/

  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的一些经验总结的更多相关文章

  1. 成都app开发:架构一个App需要学会哪些技术呢?

    成都亿合科技小编为您分享: 随着APP应用的流行,越来越多的人想自己学习怎么开发APP应用,那架构一个APP需要学些什么技术呢?首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己 ...

  2. iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构

    本文由CocoaChina译者lynulzy(社区ID)翻译 作者:Bohdan Orlov 原文:iOS Architecture Patterns 在 iOS 中使用 MVC 架构感觉很奇怪? 迁 ...

  3. 对于iOS架构的认识过程

    MVC 经典就是经典,没有之一.iOS中MVC架构,看懂斯坦福大学白胡子老头这张图基本上就可以了.   斯坦福大学MVC架构.png 简单理解,就是Controller对象拥有View和Model对象 ...

  4. iOS架构设计系列之解耦的尝试之变异的MVVM

    最近一段时间,在思考如何合理的架构一个可扩展性良好的界面编程方式.这一部分的成果做成了一个叫ElementKit的库.目前功能在不断的完善中. 关于iOS的架构,看多了MVVM,VIPER,MVC,M ...

  5. 新手怎么读懂一个中型的Django项目

    [前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基本的django框架(MTV ,ORM等)师傅可以给讲解一下框架怎么组织url.py,model.py, ...

  6. iOS - 架构的认识过程,悬崖勒马。

    16年的时候写过一篇代码讲解的,依旧是这三种架构,现在20年将近了,看到好的文章,是否增加新的认识. 16年链接 iOS - 架构模式 - 解密 MVC.MVP.MVVM.VIPER架构 新项目选择架 ...

  7. 读懂一个中型的Django项目

    转自https://www.cnblogs.com/huangfuyuan/p/Django.html [前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基 ...

  8. iOS 模仿一个小项目,总结一下里边的模块

      ManoBoo:  参考链接:http://www.jianshu.com/p/fd4c46c31508  这个小的项目是参考ManoBoo的简书的,链接在上方,自己在仿做的过程中,也离不开Man ...

  9. 发布iOS应用程序到苹果APP STORE完整流程

    参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http ...

随机推荐

  1. UWP 律师查询 MVVM

    APP简介 律师查询是基于聚合数据的律师查询接口做的,这个接口目前处于停用状态,但是,由于我是之前申请的,所以,还可以用,应该是无法再申请了. 效果图 开发 一.HttpHelper 既然是请求接口的 ...

  2. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  3. [Java 缓存] Java Cache之 DCache的简单应用.

    前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...

  4. Dapper.Contrib:GetAsync<T> only supports an entity with a [Key] or an [ExplicitKey] property

    异常处理:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 原来Model是这样滴 修改后是这样滴 注意点:Model里面的Table和Key ...

  5. MVC常遇见的几个场景代码分享

    本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步:代码由来主要是这几天使用前端Ace框架做后台管理系统,这Ace是H5框架里面的控件效果挺多的,做兼容也很好,有点遗憾是控件效果基本 ...

  6. 使用ubuntu作为web开发环境的一些感受

    从ms-dos,win95,win98,winMe,winXp,vista,win7,win10我都有使用的经历,我使用时间最长的应属winxp,其次是win7,说实话,我觉得这两个系统是微软做的最好 ...

  7. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  8. Log4net - 规则简介

    参考页面: http://www.yuanjiaocheng.net/CSharp/csharprumenshili.html http://www.yuanjiaocheng.net/entity/ ...

  9. maven打包插件:appassembler

    1.打包成bat 打包命令:mvn clean package appassembler:assemble <plugin> <groupId>org.codehaus.moj ...

  10. hadoop 2.4 遇到的问题

    不管出什么问题,首先查看日志. 在启动过hadoop的前提下,打开浏览器,输入http://localhost:50070 点击Utilities下的logs,选择hadoop-root-datano ...