有时候,我们在定位一个问题的时候,容易陷入问题本身,最后问题的定位往往无疾而终。这个时候我们需要跳出问题,换个角度来定位问题。“存同求异”不失为一个好的笨方法。
问题:一个很大的项目,复杂的项目结构,庞大的代码体系,这个时候出现一个诡异的bug,断点调试加代码检查各种无果。这个时候不妨休息一下,换个角度定位问题
问题定位:
- 1.新建一个新的空白项目,使用一个简单的界面重现问题场景。如果一样存在问题,则很有可能是框架使用方式不对或者框架本身的bug被触发了;如果一样的操作场景在这个新的项目中没有问题,那说明原来项目中的一些代码或者配置产生了这样的问题。
- 2.将原来存在问题的项目拷贝一份出来,在这个项目中新建一个界面,同样通过简单的代码在这个新的界面中重现问题场景。如果不存在问题,和存在问题的地方代码进行对比,找出不同点;如果仍然存在问题,则将项目中的其他代码都删除,最终只留这个新建的界面,如果删除后运行没有问题,那么说明问题就是由这些删掉的文件中的某个引起的(比如Objc中的Category如果写的有问题就可能产生你意向不到的问题,因为Category会覆盖框架原先的行为),如果删除了问题还在,说明问题可能出现在项目的相关设置或者配置中。
- 3.逐渐缩小对比区域,找出问题所在