首页 > 代码库 > [小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)
[小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)
[小细节,大BUG] 1. 在不久前,一个朋友出现了这样一个BUG:当UITableView加载cell的时候,自定义的cell,怎么显示,里面的文字总是显示不完全(注意,文字不长).然后,我帮忙给看了下,甚至把在storyBoard中将cell的相关属性都试了下,虽然可以解决,但是效果不理想.最终经过排查,终于发现问题所在:当自定义cell时,因为需要布局子控件,所以他重写了layoutSubviews方法,然而在此方法中没有调用[super layoutSubviews],所以造成了布局混乱.再次引以为戒.
[小细节,大BUG] 2.在IOS开发中,大部分人都了解了加载UIImage时,使用[ UIImage imageNamed:]和[UIImage imageWithContentOfFile : ]的主要区别,即前者会缓存图片,造成手机内存飙升而出现应用闪退的现象。后者并不缓存图片。然而,当有人去试着将前者改为后者时,造成了程序崩溃?经排查,原因是因为当构造图象地址时,图片名称的大小写问题.imageNamed:对于图片名称的大小写并不敏感,而imageWithContentOfFile:则严格要求路径的大小写正确.
[小细节,大BUG] 3.另外一个有意思的BUG:当在一个视图中添加UIButton时,发现根本无法点击.此时,你会想到怎样解决吗?检查父控件的userInteractionEnabled?检查按钮的enabled?或者其他的?对,我也这么做了,可最后我被这个BUG玩了,最终经过排查,发现其父控件的frame为CGRectZero!!!这又跟IOS事件传递机制与响应者链有关系.这个错误是在事件传递的过程中出现的问题:要知道事件传递是由UIApplication-->UIWindow....一直到最顶层的子控件,找到最合适的控件来响应,而所谓的合适满足两个条件:一,自己是否能够响应? 二,触摸点是否再自己身上.然后针对子控件进行遍历,重复以上两个步骤.相信到这里大家都明白了吧,就是在第二个条件出现了问题.触摸点不在其父控件身上.所以事件根本没有传递到按钮这里来,造成不能响应的BUG.