文档介绍:. 为什么你的数组包含 3个项目而不是 5个?为什么你的游戏运行缓慢?这些都跟调试有关,调试是开发过程中必不可少的一部分。本文所列举了一些重要的调试功能(当然并不全面)可以帮你用更少的时间来解决 bug 问题。本文内容主要包括 3个方面: 使用 console 检查 app 状态进行日志记录,并熟练的驾驭 NSLog 使用对象的生命周期来跟踪内存的使用。使用 Console 检查 app 状态 Xcode 底部的小黑盒是我们调试时的好朋友,它可以输出日志信息、错误信息以及其他有用的东西来帮你跟踪错误,除了可以看到日志直接输出的信息外,我们编程过程中也可以在某些断点停留,来检查 app 的多个方面。条件断点我假定你知道 Breakpoints 是如何工作的(如果你不知道,呵呵,看完这个文章也许你就知道了!) 让程序在某个特定的时间点命中断点非常有价值,但要通过一个循环或者递归函数才能让对象等于某个确定的值,是一件令人痛苦的事情。这时候我们可以使用条件断点! 条件断点就是带有条件表达式的断点,只有满足这个条件,程序才会暂停。假想我们只想在对象处于特定状态的时候断点,或者在第 N次迭代循环时命中断点。点击 Xcode editor 的‘ gutter ’来添加断点,右键点击断点,然后选择“ edit breakpoint ”来设置特定条件。条件断点只有在遇到特定情况时才会中断,你可以提供给一个条件(比如 i == 12 ),或者断点应该忽略的次数。另外,你还可以添加能根据断点自动发生的动作,例如一个 mand--- 打印一个值。提示:添加/mand+\ 另外一个重要的断点技巧是添加一个异常断点(exception breakpoint) 。当遇到异常时, Xcode 基本上都会自动转到 main 方法的 autorelease pool 中。. 通过设置异常断点,你可以定位到引起异常断点的具体代码行。如何添加异常断点? tab ( command+6 ); ”+”按钮; ‘ exception breakpoint ’。这样,当 Xcode 遇到异常情况时,将会在引起异常代码的地方发生断点。从 Console 进行手动打印理论上说,它会展示当前环境中所有值的状态;实际上,有时候会出现 bug ,并且不会列出值或者当你单步调试的时候不进行更新。一般情况下,我们在 app 代码中添加特定断点,是为了通过 Xcode 提供的‘ variables view ’(该 vie w 在 Xcode 底部 console 旁边)来查看对象的状态。理论上说,它可以显示出与当前上下文相关的所有值的状态。实际上,有时候会有点小问题,不会列出相关的值或者不会进行相关的更新。. 不过,我们可以使用一些有用的 console 命令来检查特定的对象。在 console 中输入‘ po ’就可以获得某个断点的即时信息。(处理 scalar 值时,我们可以使用‘p’) 在我们查看一个已存在的对象时,这一点非常有用(如果对象不存在的话会打印出 nil ),确定对象的值, 找出数组/字典运行时的信息,甚至是比较两个对象。因为这个指令打印出相关对象的内存地址,所以你可以打印你认为应该一样的两个对象,看看它们的内存地址是否相同。另一个有用的