最近在维护一个内部比较混乱的APP,Debug的时候遇到很多比较痛苦的地方,

因此做一个Debug记录,对以后的开发会有比较大的帮助;

这样,在开发新项目的时候就可以争取把一些BUG扼杀在襁褓中

>> 切换Debug模式和Release模式,如果你不清楚这两种模式的区别的话,你是没办法正常打包应用的!

>> 把调试和发布模式对应的配置都写到一个配置文件里,方便更改!

  以下内容可供参考:
  1. 测试服务器和正式服务器的地址
  2. 各种第三方平台接口或者SDK的AppKey等标识符
  3. 如果是RN类型的APP,可能还要配置WebView里的BaseURL

>> 用不同的Bundle Identifier来区分不同的应用,这样就可以同时打包和安装正式版、测试版

  为啥这样做?上司想装两个客户端来检查你的结果啊!

>> 用写死的数据来测试接口内容,不必找后台要测试数据,大家都很忙的!

>> 注意金融数据的精度,在传递金额数据到后端时,如果没有规定要求,就用字符串类型来传!

  我维护的项目里面,之前的开发人员竟然使用了NSInteger来存储金额!!!  

>> 不要盲目追求MVVM架构,能够把MVC实践好就很棒了!总之,要想办法把耦合度降低!

  我负责维护的项目的耦合度非常高,MVC三部分高度耦合,后期更新和维护很费力!

>> 项目的文件目录结构要清晰、符合逻辑,文件的分布要利于查看!

  不要让所有的查看都依赖于搜索,这样其实很麻烦!

>> 让程序入口和每个模块的入口都容易找到,这样找BUG会轻松很多;

  我负责维护的项目,入口隐蔽,文件目录也比较乱!

>> 网络访问模块要做好URL打印的区分,便于调试的时候校对URL信息是否异常;

  在你需要处理很多URL信息的时候,如果只是能看到URL,你将变得十分痛苦!

>> 除非为了效率或者可以肯定固定参数布局后的效果,否则尽量使用AutoLayout来进行UI布局。

>> 提前检查UI是否异常(位置、大小、配色、是否适配多种分辨率)。

  不要等到APP已经上架了,才发现自己的应用无法在多种分辨率屏幕上显示预期的布局,

  至少要用最小和最大分辨率的模拟器来运行项目,检查布局是否正常!

>> 视图控制器最好继承于一个基类,当需要修改如主题色的时候,可以很快调整完毕。

>> 使用第三方依赖库一定要确定版本,如果是通过Cocoapods导入的第三方依赖库,

  如果有必要就把对方的代码fork一份,以免某天依赖库出现异常导致无法预料的后果。

>> 单元测试和集成测试都是必不可少的,Xcode8里的UI自动化测试功能还是比较好用的!

  不过你可能得去完善每个控件的Accessibility属性里的Identifier,这样有助于你写UI自动化测试代码,

  如果是tableView,还需要设置isAccessibilityElement为true。

>> 用模拟器测试应用在不同版本的系统上运行的状况,以检查自己使用的所有API都可以正常工作,

  比如 [NSTimer timerWithTimeInterval:repeats:block:]iOS 10以下使用,应用就会崩溃!!!


Ficow原创,转载请注明出处:http://www.cnblogs.com/ficow/p/6552576.html

iOS Debug心得 (持续更新)的更多相关文章

  1. 移动端H5制作安卓和IOS的坑 持续更新...

    移动端H5制作安卓和IOS的坑 持续更新... 前言:最近参加公司的H5页面创意竞赛,又遇到不少页面在不同系统上的坑.踩坑之余,觉得很多之前遇到的知识点都忘了,索性开一篇博文,把这些坑都统一归纳起来, ...

  2. <精华篇>:iOS视频大全-持续更新

    注意:新浪微博分享的资料和简书分享的资料,略有不同! 小码哥swift3.0版 斗鱼项目视频:点击下载  iOS开发25个项目实战:点击下载 2016PHP全套下载:点击下载  黑马刀哥iOS视频精选 ...

  3. 爆炸!iOS资源大礼包(持续更新...)

    今天为大家整理了一些关于iOS学习的干货,献给正在奋斗的你们,首先声明一下,在整理的过程中参考了大量的博客和文章,知识的分享终究会增值,在此表示感谢,希望这篇文章给大家带来帮助. 基础部分: C语言教 ...

  4. iOS开发资源(持续更新)

    vm10虚拟机安装Mac OS X10.10教程 马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today) Xcode使用教程详细讲解 (上) Xcode使用 ...

  5. iOS 常用三方(持续更新)

    iOS 常用三方 1.ZWMSegmentController 分页控制器 https://github.com/weiming4219/ZWMSegmentController

  6. iOS动画相关(持续更新)

    1.When my application is entering background, because the user push the home button, the animations ...

  7. 常用的iOS 宏定义 (持续更新中)

    1.System Versioning Preprocessor Macros #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevic ...

  8. linux使用心得(持续更新)

    ! 查看发行版本信息 lsb_release -a uname -a   以下方法只适合redhat和centos cat /etc/redhat-release rpm -q redhat-rele ...

  9. iOS面试高薪,进阶 你会这些呢嘛?(持续更新中)

    这个栏目将持续更新--请iOS的小伙伴关注!做这个的初心是希望能巩固自己的基础知识,当然也希望能帮助更多的开发者! 基础>分析>总结 面试 iOS常见基础面试题(附参考答案) iOS底层原 ...

随机推荐

  1. springboot 第一个程序

    idea --> new project --> 选择Spirng Initializr --> next 傻瓜式操作  --> 添加web依赖 项目基本结构: 创建contr ...

  2. Spring Boot使用MyBatis 3打印SQL的配置

    普通Spring下的XML文件配置: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE co ...

  3. iOS macOS的后渗透利用工具:EggShell

    EggShell是一款基于Python编写的iOS和macOS的后渗透利用工具.它有点类似于metasploit,我们可以用它来创建payload建立侦听.此外,在反弹回的session会话也为我们提 ...

  4. 【转载】Unix设计哲学 & 回车换行八卦 & EOF八卦 & UNIX目录结构八卦

    昨天看了这篇文章 <关于Unix哲学> 首先用了两个例子,用风扇吹出空肥皂盒 和 太空铅笔,来说明简单设计也能派上作用吧. Unix哲学,Wikipedia上列出了好几个版本,不同的人有不 ...

  5. 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用

    责任链模式的具体应用   1.业务场景 生产车间中使用的条码扫描,往往一把扫描枪需要扫描不同的条码来处理不同的业务逻辑,比如,扫描投入料工位条码.扫描投入料条码.扫描产出工装条码等,每种类型的条码位数 ...

  6. 一起talk C栗子吧(第一百二十四回:C语言实例--内置宏)

    各位看官们,大家好,上一回中咱们说的是显示变量和函数地址的样例,这一回咱们说的样例是:内置宏.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在编译程序的时候,假设有语法错误,编译器就 ...

  7. 报错:Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView

    近期学习RecyclerView,使用eclipse引用RecyclerView.编写完demo后编译没有问题,一执行就挂掉,错误例如以下: 07-22 23:05:34.553: D/Android ...

  8. 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

    不多说,直接上干货! 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

  9. js可视区域图片懒加载

    可视区域图片懒加载 实现原理,页面滚动时获取需要懒加载的图片,判断此图片是否在可视区域内,是则设置图片data-src地址为src地址,加载图片. html下载地址 <!DOCTYPE html ...

  10. Unity即将到来的2D工具

    孙广东  2015.7.5 看了一下对功能介绍的视频,确实功能强大. 可是须要FQ在youtube上观看,所以就下载下来了.能够浏览一下: http://www.iqiyi.com/playlist2 ...