这一版比较完善的的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. Restful资源文章

    理解RESTful架构 RESTful API设计指南 RESTful架构详解 NodeJs的RESTful API

  2. Partition:Partiton Scheme是否指定Next Used?

    在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...

  3. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  4. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  5. 分布式系列文章——从ACID到CAP/BASE

    事务 事务的定义: 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),狭义上的事务特指数据库事务. 事务的作用: 当多个应用程序并发访问 ...

  6. HDU1671——前缀树的一点感触

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...

  7. Opserver开源的服务器监控系统(ASP.NET)

    Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github. ...

  8. 深入.NET平台和C#编程总结大全

    对于初学者的你,等到你把这个看完之后就更清楚地认知.NET和C#编程了,好了废话不多说,开始吧!                                                     ...

  9. 工行ICBC_WAPB_B2C支付接口

    一. 前期准备 手机银行(WAP)B2C在线支付接口说明V1.0.0.6.doc 手机银行移动生活商户及门户网站js接口API.doc 支付组件ICBCEBankUtil.dll和infosecapi ...

  10. [数据结构]——链表(list)、队列(queue)和栈(stack)

    在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...