iOS 解决一个复杂bug 之 计分卡
由于该模块界面和业务逻辑都很复杂,并且整个界面设计和业务逻辑都在ViewController(下面简称为VC)里面完成。该VC共有3000多行,一个函数几百张的也有。所以,解决起来真是头疼。
1. 问题描述
当用户操作计分卡时,分数可能不对,前场和后场的序号也可能不对。也是就说,数据读写造成了错误。
2. 问题分析
分析:这么看来,应该是业务逻辑出现了问题。但是,跟界面的更新有没有关系,也是说不清楚。当遇到这种大量界面和逻辑纠结在一起的情况,一切也就说不清楚了。
3. 解决思路
3.1. 解决方案一
怎么解决呢?现在来说,解决bug是当务之急,至于以后重构,那也是以后的事情。在这个大前提下,怎么切中要害,就是解决问题的关键了。要想解决问题,总要复现问题,这个问题的麻烦之处就在于,问题很难复现。
复现问题:怎么复现问题呢,据说是在操作的时候,横向纵向不停地转屏。最后,传给服务器的数据就错了。也是在这个提示下,曾经出现过一次数据的错乱。但是后来就没有再出现过。很奇怪吧。
3.1. 解决方案二
通过几个关键点的操作来确定问题点
3.2. 降级方案
一开始就要想好一个降级方案,以备解决不出来。
4. 解决步骤:
我从来不相信猜测,除非对程序特别的胸有成竹,或者程序本身特别检查。
那么,我要解决问题,必须复现问题。我就要打印出操作时的数据,这是解决这个问题的核心思想。当我发现什么时候的什么操作导致问题复现时,怎么解决就有了一个明确的方向。
所以我要记录步骤。
4.1.解决尝试一
4.1.1. 打印数据
数据部分有两个,一个是现有数据,一个是修改的数据。我打印出这两个数组即可。
4.1.2. 记录步骤
不在此详述...
iOS 解决一个复杂bug 之 计分卡的更多相关文章
- 如何从头到脚彻底解决一个MySQL Bug
摘要:为了保障华为云GaussDB产品的可靠性,每一款产品发布前都要通过多轮严苛的测试用例. 说明:本文中的MySQL,如果不做特殊说明,指的是开源社区版MySQL. 华为云数据库新版本在发布之前,会 ...
- iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题
最近在开发项目时编译三方.a时出现了冲突,原因是存在duplicate symbol. <1>模拟器编译时,应用的即时通讯模块采用的三方库(容联云),和视频监控模块采用的三方库(海康威视) ...
- 终于解决了贴吧手机版的一个重大BUG
终于解决了贴吧手机版的一个重大BUG 别诧异虽然同一个域名,但是,PC 和手机打开完全不一样的体验 http://tieba.yunxunmi.com/ 吃点夜校准备做梦去!! 发现 我云贴吧 一个 ...
- iOS开发之使用UICollectionView实现美团App的分类功能【偶现大众点评App的一个小bug】
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- 神奇的requestAnimationFrame解决传统定时器bug
可能你还没见过这个东西是个啥,其实他就是类似于setTimeout和setInterval,然而它与setTimeout和setInterval又有所不同,requestAnimationFrame不 ...
- 最近调试HEVC中码率控制, 发现HM里面一个重大bug
最近调试HEVC中码率控制, 发现里面一个重大bug! 码率控制中有这么一个函数: Int TEncRCGOP::xEstGOPTargetBits( TEncRCSeq* encRCSeq, Int ...
- 文《左右c++与java中国的垃圾问题的分析与解决》一bug分析
文<左右c++与java中国的垃圾问题的分析与解决>一bug分析 DionysosLai(906391500@qq.com) 2014/10/21 在前几篇一博客<关于c++与jav ...
- 记一个逻辑bug
1 从数据库中找出一个学生能选的毕业设计(毕设的select or not 字段表示本题目是否已经被选 此时就按照其值为n来查询) 2 用户选择某个毕设后,先更新毕设表(select ...
- 在mysql中RIGHT JOIN与group by一起使用引起的一个大bug
本来按理说这个小问题不值得写一个博客的,不过正是这个小问题造成了一个大bug. 本来每月对数据都好好的,但是这一两天突然发现许多数据明显不对,这一块的代码和sql有些不是我写的,不过出现了bug,还是 ...
随机推荐
- do{...}while(0)的妙用(转)
源:http://www.cnblogs.com/lizhenghn/p/3674430.html 在学习第一门编程语言时,就已经介绍了顺序分支.条件分支.循环分支.比如循环分支有for.while. ...
- 超级素数(sprime)
超级素数(sprime) 题目描述 超级素数是指一个素数,每去掉后面一个数字,总能保证剩下的数为质数,例如:373->37->3这是一个长为3的超级素数. 输入 输入一个整数n (10≤n ...
- OpenGL学习-------绘制简单的几何图形
本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同.数学上的 ...
- FCKeditor 2.6.6在ASP中的安装及配置方法分享--ZZ转载自网络
FCKeditor目前的最新版本是2.6.6,在网上搜索此版本的配置方法,发现很少有asp的配置方法,以下就把自己的一些配置经验分享给有需要的你. 首先从FCKEditor官方下载最新的版本脚本之 ...
- arm nop
MOV R0,R0 这个语句相当于做一次无用功,也就相当于实现了NOP. 接下去就是怎么修改机器码的部分.先查询手册,查到MOV 的机器码是0xE1A0(此处可能不同,主要看自己IDA反汇 ...
- HDU 5522 Numbers
水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...
- thinkphp5.0入口文件
入口文件 ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口. 应该说,所有应用都是从入口文件开始的,并且不同应用的入口文件是类似的. ...
- HDU 5487 Difference of Languages(BFS)
HDU 5487 Difference of Languages 这题从昨天下午2点开始做,到现在才AC了.感觉就是好多题都能想出来,就是写完后debug很长时间,才能AC,是不熟练的原因吗?但愿孰能 ...
- IGeoFeatureLayer
Members All Properties Methods Inherited Non-inherited Description AnnotationProperties Annotation ...
- openstack创建实例测试步骤
source admin-openrc.shkeystone user-create --name=demo --pass=123456keystone tenant-create --name=de ...