【问题标题】:Why aren't the results for po and NSLog the same in this case?为什么在这种情况下 po 和 NSLog 的结果不一样?
【发布时间】:2012-09-03 02:35:13
【问题描述】:

我在我的代码中插入了 NSLog() 调用,如下所示:

NSLog(@"error message = %@", strError);

我希望打印如下结果:

error message = abcdefg

但是 NSLog() 会打印这个:

error message = abcd

它被修剪了。这似乎不对,所以我在调试控制台中输入了以下命令:

po strError

结果如预期:

abcdefg

为什么我不能从 NSLog() 和 po 得到相同的结果?我希望打印完整的字符串,例如po,但我的程序使用 NSLog() 并输出截断的字符串。

为什么会这样,我该如何解决?

【问题讨论】:

  • 它是 NSString,局部变量
  • 那么有些事情你没有告诉我们。

标签: objective-c ios xcode debugging


【解决方案1】:

来自Technical Note TN2124

print-object(PO)实际上调用了debugDescription方法 指定的对象。 NSObject 通过调用来实现这个方法 到描述方法。因此,默认情况下,对象的调试 描述与其描述相同。

NSLog 调用description 方法,print-object(PO) 调用debugDescription 方法。两者都是一样的。

【讨论】:

  • 为什么他们会产生不同的结果呢?
  • @trojanfoe -- 不适用于 NSString。
  • @HotLicks 对不起? Parag 声明“两者都相同” - 如果是这种情况,那么为什么 OP 显示它们返回不同的结果?
  • @trojanfoe -- 因为 OP 搞砸了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多