2012-02-21 131 views
31

我已经看到为调试目的提及描述和debugDescription,但还没有看到何时使用哪个和哪些条件下可能产生不同结果的准确解释。NSObject描述和调试描述

NSObject的文档在debugDescription上也没有任何内容。问题:什么时候使用哪种产品,以及在什么条件下,他们的产量会不同?

回答

37

Technical Note TN2124

注:打印对象实际上是调用指定对象的debugDescription方法。 NSObject通过调用描述方法来实现此方法。因此,默认情况下,对象的调试描述与描述相同。但是,如果要解耦这些,则可以覆盖debugDescription;许多可可物体都这样做。

如果您已经实施了debugDescription,则在GDB中打印对象将显示其结果。知道在UI中使用description(我知道绑定可以做到这一点),您可能希望使用它来打印用户不需要看到的一些附加信息。

1

一个除了已经告诉的东西。

如果您想在lldb中使用po来改善输出,您可以覆盖debugDescription方法。请记住,打印自我(对象本身)将调用描述方法。如果由于某种原因<ClassName: objectAddress>不适合您,也会覆盖该方法。

所以我在这里要强调的是,打印自己将调用description方法,而po调用debugDescription默认情况下调用描述。给这个你可以区分这个调用的结果。