【发布时间】:2012-02-21 14:53:31
【问题描述】:
我已经看到提到 description 和 debugDescription 用于调试目的,但还没有看到精确解释何时使用它们以及在什么条件下它们可能会产生不同的结果。
NSObject 的文档也没有关于 debugDescription 的任何内容。问题:什么时候使用哪个,在什么条件下,它们的输出应该/会有所不同?
【问题讨论】:
标签: objective-c nsobject
我已经看到提到 description 和 debugDescription 用于调试目的,但还没有看到精确解释何时使用它们以及在什么条件下它们可能会产生不同的结果。
NSObject 的文档也没有关于 debugDescription 的任何内容。问题:什么时候使用哪个,在什么条件下,它们的输出应该/会有所不同?
【问题讨论】:
标签: objective-c nsobject
注意:print-object实际上调用了指定对象的debugDescription方法。 NSObject 通过调用 description 方法来实现这个方法。因此,默认情况下,对象的调试描述与其描述相同。但是,如果您想解耦这些,您可以覆盖 debugDescription;许多 Cocoa 对象都这样做。
如果您实现了debugDescription,则在 GDB 中打印对象将显示其结果。知道 description 在 UI 中使用(我知道绑定会这样做),您可能希望使用它来打印一些用户不需要看到的附加信息。
【讨论】:
对已经讲述的内容进行补充。
如果您想在 lldb 中使用 po 时改进输出,您可以覆盖 debugDescription 方法。请记住,打印 self(对象本身)将调用描述方法。如果由于某种原因<ClassName: objectAddress> 对您不利,您也可以覆盖该方法。
所以我的意思是强调打印 self 将调用 description 方法,而 po 调用 debugDescription 默认情况下调用描述。给出这个你可以区分调用的结果。
【讨论】: