我昨天发了个iOS开发步骤。前面几步,我都做得相对轻松,因为我有相对专业一些的项目管理工作经验,对iOS开发也有足够的基础。问题出在第7步“写出功能逻辑图、计算公式、赋值表“。第7步是完全软件开发专业活。不过,我那堆十年前买的书里,应该有一本书可以帮到我。有时间的话,先过一遍:)
光逻辑图这块就很难搞。 我先Log每个方法。确实也理清了多数大逻辑。只是,昨天手上的源码,有一个按钮方法,不知道是在哪里被调用的。viewDidLoad已经结束。然后,没有看到任何方法调用,Button自己出来了。 我在Button里设断点,用lldb bt查看,都没用。因为Button之前的上一步已经不在内存。 这时,我想起Tiny兄说过,每行代码插Log。OK,我就开始暴力Log吧。 昨晚跟老婆讨论了一下,我们觉得这次找到Button的入口后,还是要回头看看是怎么进去的,为什么从那里进。
昨晚回去比较晚,代码也不短,睡得早,没Log完。现在继续:)
祝大家生活工作一切顺利:)
如果只是用 log 找一个bug的话,可以考虑用折半查找的思路;在可能出问题的地方 1/2 一下;看看问题只 log 前还是 log 后;然后不断 1/2 细化下去。
这个,建议还是看一下 WWDC 2013, Session 407 Debugging with Xcode 吧。http://devstreaming.apple.com/videos/wwdc/2013/407xdx3xw3kl5xx1h5cs73sp/407/407-HD.mov?dl=1
为什么大家觉得通过print log调试是笨办法呢? 我已经几乎不记得上次动用gdb设置断点是什么时候的事了。log基本上是我现在所需要的唯一的调试工具。
我的体验就是,如果在开发阶段,就遇到了需要动用高级调试工具才能诊断出的bug,一般来说设计上太复杂了,或者没有理清业务逻辑,或者对使用的库,框架的设计逻辑没有摸透(比如楼主现在遇到的情况)。至少,代码有点混乱,需要重构了。否则不应该通过几步的log看不出问题在哪。
另外,顺便羡慕下楼主,居然可以和老婆一起讨论编程,我觉得这比和老婆一起看A片还酷,还幸福,真难得啊