这一版比较完善的的App终于提交审核了。有时间写写本身的一些经验的总结了。本身主导的从0到比较成型的app到目前来讲也只有两个,可是其中的不少东西都是大同小异。基本上是想到了什么就写什么,感受写的不到位的地方,欢迎留言给我。html
1.首先是controller的解藕方面的东西:git
OC的时代,苹果对于controller的解藕作的不是神完善,对于这块的内容,能够看看我去年写的一篇文章,快速直达。那篇文章介绍的还不是很完善,里面的实例代码也不是很完善。好比说没有个baseviewcontroller之类的东西,实际的时候要弄个这个,present的时候没有默认的新建nav。总之参考一下就行了。github
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却又写在里面的的代码了。app
4.合理的使用单例。框架
单例这个东西是比较好用的,可是由于其威力比较大,影响会比较普遍,因此必定要慎重的使用。用户基本信息,登陆否等的基本信息能够存在单例里面,可是能够是单例持有的一个userinfo的对象,保持扩展,说不定那天你的程序就能够多用户登陆了呢。curl
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,使用起来仍是很方便的。
就先写到这吧,下班了,想起来其它的再更新补充吧